zoukankan      html  css  js  c++  java
  • PHP5 ini配置文件优化

    1.1使用tmpfs作为缓存加速缓存的文件目录

    [root@php-node1 ~]# mount -t tmpfs tmpfs /dev/shm/ -o size=256m

    [root@php-node1 ~]# mount -t tmpfs /dev/shm/ /tmp/eaccelerator/

    提示:

    1、上传图片缩略图临时处理的目录/tmp:

    2、其他加速器临时目录/tmp/eaccelerator/

    1.2php.ini参数调优

    无论是Apache还是Nginx,php.ini都是适合的。而php-fpm.conf适合nginx+fastcgi方式配置。首先选择产品环境的php.ini(php.ini-production)

    /application/tools/php-5.3.27/php.ini-development

    /application/tools/php-5.3.27/php.ini-production

    两者的区别:生产场景php.ini的日志都是关闭或者输出到文件中的。所以我们生产场景把非程序(PHP引擎)上的输出都关闭或者隐藏。

    1.2.1打开php的安全模式

    php的安全模式是个非常重要的php内嵌的安全机制,能够控制一些php中的函数执行,比如system(),同时把很多文件操作的函数进行了权限控制。

    该参数配置如下:

    safe_mode = Off

    ;是否启用安全模式。

    ;打开时,PHP将检查当前脚本的拥有者是否是被操作的文件的拥有者相同

    如上,默认的php.ini是没有打开安全模式的,我们把它打开如下:

    safe_mode = On

    1.2.2用户组安全

    当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同组的用户也能够对文件进行访问。建议设置为:

    safe_mode_gid = off

    如果不进行设置,可能我们无法对服务器网站目录下的文件进行操作了,比如我们需要对文件进行操作的时候。php5.3.27默认为safe_mode_gid = off

    1.2.3关闭危险函数

    如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,我们觉得不希望执行包括system()等在那的能够执行命令的php函数,或者能够查看php的信息的phpinfo()等函数,那么我们就可以禁止它们,方法如下:

    disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

    如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作

    disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir.rename,

    file,file_get_contets,fputs,fwrite,chgrp,chmod,chown

    以上只是列了部分不常见的文件处理函数,你也可以把上面执行命令函数和这个函数结合,就能够抵制大部分的phpshell了。该参数默认为disable_functions=

    1.2.4关闭PHP版本信息在http头中的泄漏

    我们为了防止黑客获取服务器中的php版本的信息,可以关闭该信息在http头中。

    expose_php = On

    ;是否暴露PHP被安装在服务器上的事实(在http头中加上其签名)。

    ;它不会有安全上的直接威胁,但它使得客户端知道服务器上安装了PHP。

    建议设置为

    expose_php = Off

    这样当黑客执行telnet xuliangwei.com 80的时候,那么将无法看到PHP的信息。

    1.2.5关闭注册全局变量

    在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭:

    该参数默认配置如下:

    register_globals = Off

    ;是否将E,G,P,C,S变量注册为全局变量。

    ;打开该指令可能会导致严重的安全问题,除非你的脚本经过非常仔细的检查。

    ;推荐使用预定义的超全局变量:$_ENV,$_GET,$_POST,$_COOKIE,$_SERVER

    ;该指令受variables_order指令的影响。

    ;PHP6中已经删除此指令。

    建议设置为:

    register_globals = Off

    1.2.6打开magic_quotes_gpc来防止SQL注入

    SQL注入是非常危险的问题,轻则网站后台被入侵,重则整个服务器沦陷,所以一定要小心。php.ini中有一个设置:

    magic_quotes_gpc = Off

    这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,比如把’转为’等,这对防止sql注入有重大作用。所以我们推荐设置为:

    magic_quotes_gpc = On

    SQL注入防范:

    Apache中的mod_security和mod_evasive

    Nginx lua waf

    1.2.7错误信息控制

    一般php在没有连接到数据库或者其他情况下会又提示错误,一般错误信息中会包含php脚本当前的路径信息或者查询的SQL语句等信息,这类信息提供给黑客后,是不安全的,所以一般服务器建议禁止错误提示。

    该参数默认配置如下:

    display_errors = Off

    ;是否将错误信息作为输出的一部分显示给终端用户。应用调试时,可以打开,方便查看错误。

    ;在最终发布的web站点上,强烈建议你关掉这个特性,并使用错误日志代替。

    ;在最终发布的web站点打开这个特性可能暴露一些安全信息。

    ;例如你的web服务器上的文件路径、数据库规划或别的信息。

    设置为:

    display_error = Off (php5.3.27默认即为off状态)

    如果确实需要显示错误信息,一定要要设置显示错误的级别,比如只显示警告以上的信息。

    error_reporting = E_WARNING & E_ERROR   #当然最好是关闭

    1.2.8错误日志

    建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因:

    log_errors = On (php5.3.27默认即为On)

    同时也要设置错误日志存放的目录,建议跟Web服务的日志存在一起。

    error_log = /application/logs/php_error.log    #注意:给文件必须允许web用户和组具有写的权限

    1.3部分资源限制参数优化

    1.3.1设置每个脚本运行最长时间

    当无法上传较大的文件或者后台备份数据经常超时,此时需要调整如下设置:

    max_execution_time = 30

    ;每个脚本最大允许执行时间(秒),0 表示没有限制。

    ;这个参数有助于劣质脚本无休止的占用服务器资源。

    ;该指令仅影响脚本本身的运行时间,任何其他花费在脚本运行之外的时间。

    ;如果system()/sleep()函数的使用、数据库查询、文件上传等,都不包括在内。

    ;在安全模式下,你不能用ini_set()在运行时改变这个设置。

    1.3.2每个脚本使用的最大内存

    memory_limit = 128M

    ;一个叫本能所能够申请到的最大内存字节数(可以使用K和M作为单位)。

    ;这有助于防止劣质脚本消耗完服务器上的所有内存。

    ;要能够使用指令必须在编译时时间--enable-memory-limit配置选项。

    ;如果要取消内存限制,则必须将其设为 -1。

    ;设置了该指令后,memory_get_usage()函数将变为可用。

    1.3.3每个脚本等待输入数据最长时间

    max_input_time = -1

    ;每个脚本解析输入数据(POST,GET,upload)的最大允许时间(秒)。

    ;-1 表示不限制。

    设置为:

    max_input_time = 60;

    1.3.4上传文件最大许可大小

    当上传较大文件时,需要调整如下参数:

    upload_max_filesize = 2M;

    ;上传文件的最大许可大小,根据公司业务进行调整。

    1.3.5部分安全参数优化

    1、 禁止打开远程地址,例如远程执行phpshell,关闭如下:

    allow_url_fopen = Off

    2、设定:cgi.fix_pathinfo=0防止Nginx文件类型错误解析漏洞。

  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/xuliangwei/p/8626114.html
Copyright © 2011-2022 走看看