介绍

这个页面的目的是为了帮助那些配置 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              = Offerror_reporting         = E_ALLdisplay_errors          = Offdisplay_startup_errors  = Offlog_errors              = Onerror_log               = /valid_path/PHP-logs/php_error.logignore_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.mimeallow_url_fopen         = Offallow_url_include       = Offvariables_order         = "GPCS"allow_webdav_methods    = Offsession.gc_maxlifetime  = 600

allow_url_* 很容易发生 LFI 还有 RFI 完全漏洞。

PHP 上传文件处理

file_uploads            = Onupload_tmp_dir          = /path/PHP-uploads/upload_max_filesize     = 2Mmax_file_uploads        = 2

如果你的应用没有使用文件上传功能,或者说用户唯一的输入上传的方式是通过没有包含文档附件的表单提交, file_uploads 应当被设置成 Off。

PHP 可执行处理

enable_dl               = Offdisable_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-modedisable_classes         =

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/pathmemory_limit            = 50Mpost_max_size           = 20Mmax_execution_time      = 60report_memleaks         = Ontrack_errors            = Offhtml_errors             = Off

英文原文地址:

https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/PHP_Configuration_Cheat_Sheet.md

更多相关文章

  1. 怎么将网站的php版本信息隐藏起来
  2. Linux下oracle_rman备份配置参考文档
  3. Elasticsearch 升级 7.x 版本后,我感觉掉坑里了!
  4. 微服务聚合Swagger文档,这波操作是真的香!
  5. 给Swagger升级了新版本,没想到居然有这么多坑!
  6. 如何写出优雅的开源项目文档
  7. [一些勘误]ubuntu16.04的Python版本,Python3是否默认安装pip
  8. mall整合Swagger-UI实现在线API文档
  9. mall整合Mongodb实现文档操作

随机推荐

  1. jQuery并在回调中解析JSON
  2. 不仅模糊了Jquery中的一个动作
  3. Jquery跨域进行Ajax操作
  4. 更改html隐藏字段的事件
  5. JQuery------获取中的文件内容
  6. jQuery实例(ajax通信和动态加载二级菜单)
  7. Jquery常用技巧和方法收集
  8. 为什么使用observe_field代码不能使用JQu
  9. jQuery——可见性筛选选择器
  10. 如何改变这个js的持续时间