介紹
這個頁面的目的是為了幫助那些配置PHP 和運行它的web 伺服器的人確保它的安全性。
下面你將找到有關 php.ini 檔案的正確設定資訊。
php.ini
下面的一些設定需要適應你的系統,特別是 session.save_path,session.cookie_path (例如: /var/www/mysite) ,和session.cookie_domain (例如:ExampleSite.com)。
你也應該執行 PHP 7.2 或更高版本。如果你執行的版本是 PHP 7.0 和 PHP 7.1 ,你將在下面的幾個地方使用略有不同的值(看內聯的註解)。
最後,請查看 PHP 文件 以獲得關於 php.ini 設定檔中每個值的參考。
你可以在現成的 php.ini 檔案中找到以下配置的副本 此處 。
PHP 錯誤處理
expose_php = Off error_reporting = E_ALL display_errors = Off display_startup_errors = Off log_errors = On error_log = /valid_path/PHP-logs/php_error.log ignore_repeated_errors = Off
請注意:你需要在生產環境中 display_errors 設定成 Off, 同時最好養成經常查看這些日誌的好習慣。
PHP 通用設定
doc_root = /path/DocumentRoot/PHP-scripts/ open_basedir = /path/DocumentRoot/PHP-scripts/ include_path = /path/PHP-pear/ extension_dir = /path/PHP-extensions/ mime_magic.magicfile = /path/PHP-magic.mime allow_url_fopen = Off allow_url_include = Off variables_order = "GPCS" allow_webdav_methods = Off session.gc_maxlifetime = 600
allow_url_* 很容易發生 LFI 還有 RFI 完全漏洞。
PHP 上傳檔案處理
file_uploads = On upload_tmp_dir = /path/PHP-uploads/ upload_max_filesize = 2M max_file_uploads = 2
如果你的應用程式沒有使用檔案上傳功能,或者說使用者唯一的輸入上傳的方式是透過沒有包含文件附件的表單提交, file_uploads 應被設定成Off。
PHP 可執行處理
enable_dl = Off disable_functions = system, exec, shell_exec, passthru, phpinfo, show_source, highlight_file, popen, proc_open, fopen_with_path, dbmopen, dbase_open, putenv, move_uploaded_file, chdir, mkdir, rmdir, chmod, rename, filepro, filepro_rowcount, filepro_retrieve, posix_mkfifo # 请查看:http://ir.php.net/features.safe-mode disable_classes =
以上是 PHP 中存在危險的方法和類別.。你應該禁用其中不會使用到的方法和類別。
PHP session 處理
Session 設定中有一些需要重點關注的值, 將session.name 改成新的是個很好的練習.
session.save_path = /path/PHP-session/ session.name = myPHPSESSID session.auto_start = Off session.use_trans_sid = 0 session.cookie_domain = full.qualified.domain.name #session.cookie_path = /application/path/ session.use_strict_mode = 1 session.use_cookies = 1 session.use_only_cookies = 1 session.cookie_lifetime = 14400 # 4小时 session.cookie_secure = 1 session.cookie_httponly = 1 session.cookie_samesite = Strict session.cache_expire = 30 session.sid_length = 256 session.sid_bits_per_character = 6 # PHP 7.2+ session.hash_function = 1 # PHP 7.0-7.1 session.hash_bits_per_character = 6 # PHP 7.0-7.1
更多的安全隱患的檢查
session.referer_check = /application/path memory_limit = 50M post_max_size = 20M max_execution_time = 60 report_memleaks = On track_errors = Off html_errors = Off
#英文原文網址:
https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets /PHP_Configuration_Cheat_Sheet.md
以上是OWASP 維護的 PHP 安全設定速查表的詳細內容。更多資訊請關注PHP中文網其他相關文章!