1.不要依賴註冊全域變數功能(register_globals)
註冊全域變數的出現曾經讓PHP變得非常易用,但也降低了安全性(方便之處經常會破壞安全性)。建議在程式設計時把register_globals指令關閉,在PHP6這個功能也會被取消。
2.在使用變數之前對其進行初始化。
如果register_globals功能是啟動的,即使程式設計師不使用它,惡意使用者也可能利用為初始化變數的漏洞來侵入我們的系統。例如:
if(conditon){
$auth=TRUE;
}
如果變數$auth沒有在這段之前被初始化為FALSE,那麼使用者就可以傳遞$_GET[' auth']、$_POST['auth']或$_COOKIE['auth']輕易的實作驗證。
3.檢驗並淨化全部輸入資料。
4.在利用變數引用包含檔案時要小心。
如果腳本中有這樣的程式碼:
require($page);
那麼就應該確保$page不會來自外部資源(例如$_GET),或者,如果它的確來自於外部資源,那麼就要確保它包含適當的值。
5.在使用任何伺服器上執行命令的函數都要多加小心。
這些函數包括eval()、exec()、system()、passthru()、popen()和反撇號(``)。這些函數都能夠在伺服器上執行命令,永遠不要隨意使用。如果在指令裡不得不包含便來那個,就應該對這個變數進行徹底的安全檢查。也應該使用escapeshellarg() escapeshellcom()進行額外的預處理。
6.更改預設的會話目錄,或使用資料庫儲存會話資料。
7.不要使用瀏覽器提供的檔案名稱在伺服器上儲存上傳的檔案。
8.如果被提交的資料需要在web頁面中重新顯示,一定要注意其中的HTML,更重要的是JAVASCRIPT
可以利用函數
string htmlspecialchars ( string string [, int quote_style [, string charset]])
對提交的資料進行處理
9。不要在網站上暴露你的PHP錯誤訊息
PHP錯誤訊息能夠在你開發的過程中把錯誤訊息輸出方便你的檢查,但是如果暴露在Web上面,很可以成為攻擊者的入口。
10.防止SQL注入攻擊。
應該使用特定語言的資料庫轉義函數,例如mysqli_real_escape_data(),確保提交的內容不會破壞查詢操作。
11.永遠不要在伺服器上儲存phpinfo()腳本。
以上就介紹了 PHP安全技術之 實現php基本安全,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。