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