相關關鍵詞
關于我們
最新文章
php安全配置記錄和常見錯誤梳理(總結(jié))
通常部署完php環(huán)境后會進行一些安全設置,除了熟悉各種php漏洞外,還可以通過配置php.ini來加固PHP的運行環(huán)境,PHP官方也曾經(jīng)多次修改php.ini的默認設置。
下面對php.ini中一些安全相關參數(shù)的配置進行說明
register_globals 當register_globals = ON時,PHP不知道變量從何而來,也容易出現(xiàn)一些變量覆蓋的問題。因此從最佳實踐的角度,強烈建議設置 register_globals = OFF,這也是PHP新版本中的默認設置。 open_basediropen_basedir 可以限制PHP只能操作指定目錄下的文件。這在對抗文件包含、目錄遍歷等攻擊時非常有用,應該為此選項設置一個值。 需要注意的是,如果設置的值是一個指定的目錄,則需要在目錄最后加上一個“/”,否則會被認為是目錄的前綴。 open_basedir = /home/web/html/ allow_url_include = Off 為了對抗遠程文件包含,請關閉此選項,一般應用也用不到此選項。同時推薦關閉的還有allow_url_fopen。 display_errors = Off 錯誤回顯,一般常用于開發(fā)模式,但是很多應用在正式環(huán)境中也忘記了關閉此選項。錯誤回顯可以暴露出非常多的敏感信息,為攻擊者下一步攻擊提供便利。推薦關閉此選項。 log_errors = On 在正式環(huán)境下用這個就行了,把錯誤信息記錄在日志里。正好可以關閉錯誤回顯。 magic_quotes_gpc = Off 推薦關閉,它并不值得依賴(請參考“注入攻擊”一章),已知已經(jīng)有若干種方法可以繞過它,甚至由于它的存在反而衍生出一些新的安全問題。XSS、SQL注入等漏洞,都應該由應用在正確的地方解決。同時關閉它還能提高性能。 cgi.fix_pathinfo = 0 若PHP以CGI的方式安裝,則需要關閉此項,以避免出現(xiàn)文件解析問題(請參考“文件上傳漏洞”一章)。 session.cookie_httponly = 1 開啟HttpOnly session.cookie_secure = 1 若是全站HTTPS則請開啟此項。 sql.safe_mode = Off PHP的安全模式是否應該開啟的爭議一直比較大。一方面,它會影響很多函數(shù);另一方面,它又不停地被黑客們繞過,因此很難取舍。如果是共享環(huán)境(比如App Engine),則建議開啟safe_mode,可以和disable_functions配合使用; 如果是單獨的應用環(huán)境,則可以考慮關閉它,更多地依賴于disable_functions控制運行環(huán)境安全。 disable_functions = 能夠在PHP中禁用函數(shù)(如上默認=號后面什么都不配置)。這是把雙刃劍,禁用函數(shù)可能會為開發(fā)帶來不便,但禁用的函數(shù)太少又可能增加開發(fā)寫出不安全代碼的幾率,同時為黑客獲取webshell提供便利。 一般來說,如果是獨立的應用環(huán)境,則推薦禁用以下函數(shù): disable_functions = escapeshellarg, escapeshellcmd, exec,passthru, proc_close, proc_get_status, proc_open, proc_nice,proc_terminate, shell_exec, system, ini_restore, popen, dl,disk_free_space, diskfreespace, set_time_limit, tmpfile, fopen,readfile, fpassthru, fsockopen, mail, ini_alter, highlight_file,openlog, show_source, symlink, apache_child_terminate,apache_get_modules, apache_get_version, apache_getenv,apache_note, apache_setenv, parse_ini_file