程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP安全技術之 實現php基本安全

PHP安全技術之 實現php基本安全

編輯:關於PHP編程

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()腳本。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved