1、打开php的安全模式

php的安全模式是个非常重要的php内嵌的安全机制,能够控制一些php中的函数执行,比如system(),同时把被很多文件操作的函数进行了权限控制。
默认关闭,338行
safe_mode = Off
改为
safe_mode = On

2、用户组安全

; By default, Safe Mode does a UID compare check when
; opening files. If you want to relax this to a GID compare,
; then turn on safe_mode_gid.
; http://php.net/safe-mode-gid
safe_mode_gid = Off  # php5.3.27默认关闭

3、关闭危险函数

当打开安全模式,函数禁止可以不做,但为了双重保险还是做。比如不执行system()能执行系统命令的函数,或能查看php信息的phpinfo()等函数。方法如下
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

4、关闭php版本号

php版本号会在http的head里显示
expose_php = On
改为
expose_php = Off

5、关闭注册全局变量

register_globals = Off  # 默认关闭,不要打开

6、打开magic_quotes_gpc防止SQL注入

magic_quotes_gpc = Off
改为
magic_quotes_gpc = On

7、错误信息控制

一般php在没有连接到数据库或者其他情况下会有错误提示,一般错误信息中会包含php脚本当前的路径信息或者查询的SQL语句等信息,这类信息在生产环境是不允许的,应禁止。想要错误信息,应该导入日志。
display_errors = Off (默认值,不是改为off)

显示错误级别
error_reporting = E_WARNING & E_ERROR

8、错误日志

log_errors = On
log_errors_max_len = 1024   # Set maximum length of log_errors.
error_log = /app/logs/php_errors.log  # 注意写权限

9、资源参数限制优化

# 设置每个脚本运行的最长时间,当无法上传较大的文件或者后台备份数据经常超时,需调整下面参数,单位秒。
max_execution_time = 30
# 每个脚本使用的最大内存
memory_limit = 128M
# 每个脚本等待输入数据最长时间
max_input_time = 60 
# 上传文件的最大许可
upload_max_filesize = 2M

10、安全参数优化

# 禁止打开远程地址
allow_url_fopen = On
改为
allow_url_fopen = Off
# 防止Nginx文件类型错误解析漏洞
cgi.fix_pathinfo=0
文档更新时间: 2019-03-14 16:31   作者:李延召