PHP Security Guide

這禮拜把 PHP Security Guide ( phpsec.org/projects/ ) 看完了,還蠻不錯的一份文件。

最基本步驟 1.考量壞心的使用者 2.要自我教育安全知識 3.過濾所有來自外部的資料。以下小記幾個重點:

1.Register Globals 造成的影響,建議開發時打開 E_ALL,初始所有變數。

2.介紹XSS攻擊。一定要過濾資料,並使用現成的PHP function來處理( htmlentities(),strip_tags(), utf8_decode() 等),使用白名單而不用黑名單過濾。建議使用 naming convention 來幫忙區分資料,如 $clean 表示所有處理好的資料。

3.介紹CSRF攻擊。建議使用 post 方法而少用 get。使用 $_POSt 而非 $_REQUEST。接收表單時檢查來自正確的表單頁面(使用token技巧)

4.建議讓一些 library file 放在網站外,或是設定apache 讓 library 目錄不可讀取。而 database access 帳號密碼則建議用 root 另存文字檔,然後在 httpd.conf 中去讀取(還是要小心phpinfo會洩漏)。

5.介紹SQL Injection,用 mysql_escape_string() 來處理,不要用 addslashed() 。

6.介紹 Session Fixation ,建議在重要時刻(更改使用者權限的時候)隨時使用 session_regenerate_id() 換 SESSION ID。

7.預防 Session Hijacking ,使用能consistent的資料(如  HTTP_USER_AGENT)來確定使用者是同一人。

8.介紹Shared Hosts的危險。建議 session data可以放到資料庫而不要放 /tmp。使用 safe_mode來限制 PHP。

發佈留言

發表迴響