Chinaunix首页 | 论坛 | 博客
  • 博客访问: 380877
  • 博文数量: 114
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1219
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-07 21:23
文章分类

全部博文(114)

文章存档

2018年(1)

2017年(5)

2016年(87)

2015年(21)

我的朋友

分类: 系统运维

2016-05-02 15:58:21


  1. 无论是apache还是nginx,php.ini都是通用,而php-fpm.com适合nginx+fcgi的配置
  2. 首先选择产品环境的php.ini(php.ini-production)
  3. [root@TCS ~]# ls /home/oldboy/tools/php-5.3.27/php.ini-*
  4. /home/oldboy/tools/php-5.3.27/php.ini-development
  5. /home/oldboy/tools/php-5.3.27/php.ini-production

  6. 打开PHP的安全模式
  7. PHP的安全模式是个非常重要的php内嵌的安全机制,能够控制一些php中的函数执行
  8. 启用安全模式
  9. safe_mode = On

  10. (1)关闭危险函数
  11. 如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去,比如system()或者能够查看php信息的phpinfo();
  12.  PHP函数禁用找到

  13.     disable_functions =

  14. 该选项默认为disable_functions = ;可以设置哪些PHP函数是禁止使用的,PHP中有一些函数的风险性还是相当大的,
  15. 可以直接执行一些CentOS系统级脚本命令,如果允许这些函数执行,当PHP 程序出现漏洞时,损失是非常严重的!以下我们给出推荐的禁用函数设置:

  16.     disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status

  17. 需注意:如果您的服务器中含有一些CentOS系统状态检测的PHP程序,则不要禁用shell_exec,proc_open,proc_get_status等函数。


  18. (1.1)关闭PHP版本信息在http头中的泄露
  19. 为了防止黑客获取服务器中的PHP版本信息,可以关闭该信息泄露在http头中。
  20. 该参数默认配置为
  21.  435行 expose_php = On
  22. 建议设置为 expose_php = Off ;它不会有安全上的直接威胁,但会使得客户端知道服务器上的PHP;当黑客执行telnet www.zsq.com 80 时,那么将无法看到php信息;
  23. (1.2)关闭注册全局变量
  24. 在php中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问
  25. 这是对服务器非常不安全的,所以不能让它注册为全局变量关闭此选项;

  26.     register_globals = Off

  27. 网络上很多关于PHP设置的文章都推荐将该选项设置为On,其实这是一种及其危险的设置方法,很可能引起严重的安全性问题。如果没有特殊的需要,
  28. (1.3)错误信息控制
  29. 一般PHP在没有连接到数据库或者其他情况下会有错误提示,一般错误提示会把php脚本当前的路径
  30. 信息或者查询SQL语句等信息,是不安全的,所以一般服务器都应禁止错误提示
  31. display_errors = Off

  32. (1.4)错误日志
  33. 建议在关闭display_errors后能够把错误记录下来,便于查找服务器运行状况;
  34. log_errors=On{php5.3.27默认即为log_errors=On}
  35. 同时也要设置错误日志存放的目录,建议跟apache日志存在一起;
  36.  error_log = /app/logs/php_errors.log
  37. 注意:文件必须允许apache用户和组具有写的权限,同时上面log为On时,才能指定错误日志存放路径;

  38.  

  39. (2) PHP脚本执行时间找到

  40.     max_execution_time = 30

  41. 该选项设定PHP程序的最大执行时间,如果一个PHP脚本被请求,且该PHP脚本在max_execution_time时间内没能执行完毕,则PHP不再继续执行,直接给客户端返回超时错误。没有特殊需要该选项可保持默认设置30秒,如果您的PHP脚本确实需要长执行时间则可以适当增大该时间设置。

  42. (3) PHP脚本处理内存占用找到

  43.     memory_limit = 128M
  44. (3.1)每个脚本等待输入数据最长时间
  45.  max_input_time = 60


  46. 该选项指定PHP脚本处理所能占用的最大内存,默认为128MB。

  47. (4)禁止打开远程地址,禁止利用控制服务器在本地执行远程PHP程序;
  48.  allow_url_fopen = Off,默认已经打开
  49.  
  50. (4.1)设定:cgi.fix_pathinfo=0 防止Nginx文件类型错误解析漏洞;




  51. (5) PHP上传文件大小限制找到

  52.     upload_max_filesize = 2M

  53. 该选项设定PHP所能允许最大上传文件大小,默认为2MB。根据实际应用需求,可以适当增大该设置。
  54. (6) 几个地方的检查
  55. 查找:display_errors
  56. 如果是On的话改成Off

  57. 打开magic_quotes_gpc来防止SQL注入,这个默认是关闭的
  58. 查找:magic_quotes_gpc
  59. 如果是Off的话改成On

  60. (7)调整PHP sesson信息存放类型和位置

  61. session.save_handler = files

  62. ;存储和检索与会话关联的数据的处理器名字,默认为文件("files"

  63. ;如果想要使用自定义的处理器(如基于数据库的处理器),可用"user"

  64. ;设为"memcache"则可以使用memcache作为会话处理器(需要指定"--enable-memcache-session"编译选项)。

  65. ; session.save_path = "/tmp"

  66. ;传递给存储处理器的参数,对于files处理器,此值是创建会话数据文件的路径。

  67. 可以直接用memcached来作为PHP的session.save_handler

  68. 1.安装memcached服务端软件(略)
  69. 注意:memcached用libevebt来作事件驱动,要先安装libevent

  70. 2.安装memcache客户端(略)

  71. 3.配置
  72. 修改配置文件,在php.ini中全局设置;
  73. web 集群session共享存储设置:
  74. 默认php.ini中session的类型和配置路径:

  75. #session.save_handler = files

  76. #session.save_path = "/tmp"

  77. 修改成如下配置:

  78. session.save_handler = memcache

  79. session.save_path = "tcp://10.0.0.18:11211"

  80. 提示:

  81. 1)10.0.0.18:11211为memcache数据库缓存的IP及端口

  82. 2)上述适合LAMP、LNMP环境

  83. 3)memcache服务器也可以是多台通过hash调度

阅读(1433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~