php.ini的安全性設定參考
safe_mode = on
限制system, exec等系統執行的能力,限制某些function只能處理與自己同一個UID的檔案。
safe_mode受限制的功能請參考http://tw2.php.net/manual/en/features.safe-mode.functions.php
因為mail()的第五個參數有漏洞,可突破safe_mode的限制,執行系統命令,最好disable,以SMTP的方式替代寄信。
register_globals = off
allow_url_fopen = Off (很重要的設定)
allow_url_fopen 打開的時候, 如果有人傳入一個參數為 xxx=http://xxx/xxx 之類的東西,
如果這個 php 的程式, 沒有檢查這個變數, 或是 register_globals 是開啟的情形下, 也許會造成這個 php 使用
include() 去把遠端那個 URL 的檔案給引入執行…. 也就是執行到了別人寫的程式, 這時… 自然別人想在那裡頭做什麼,
就能夠做什麼了.
display_errors = off
盡量不要在正式上線的主機直接顯示錯誤在頁面上,以避免暴露系統資訊。如需有debug的需要則開啟log_errors = On ,並以error_log = filename指定錯誤訊息要記錄到哪個檔案。
magic_quotes_gpc = on
默認是on,但需檢查一遍
open_basedir =web目錄
盡量將網站的起路徑限制在web的路徑,並免駭客去引用web路徑以外的檔案。
disable_functions = (很重要的設定,對外的Web建議要把可以執行系統指令的functions拿掉) system,exec,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,dl,set_time_limit
非必要一定要關閉的funciton,不然駭客會利用來執行檔案來取得你的管理權限。
能的話盡量將php檔案編碼過,可避免駭客在得到你的程式後,進一步分析程式的漏洞。
盡量限制可上傳檔案的folder,其他的目錄都不要讓web server有寫入的權限。
php檔案的owner不能是root,配合safe_mode使用,可以避免駭客利用來以root身份執行命令。
fsockopen能的話也關掉,但是因為有部分套裝程式會用到,例如Horde Webmail,如果關掉fsockopen imap會連不上。
[……]
閱讀更多