實現PHP基本安全11條

來源:互聯網
上載者:User

標籤:style   http   ar   os   使用   java   sp   檔案   資料   

 1.不要依賴註冊全域變數功能(register_globals)

  註冊全域變數的出現曾經讓PHP(PHP培訓 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基本安全11條

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.