您的位置:1010cc时时彩经典版 > 1010cc时时彩客户端 > 1010cc时时彩经典版:8个必得修改的PHP私下认可配

1010cc时时彩经典版:8个必得修改的PHP私下认可配

发布时间:2019-09-01 07:46编辑:1010cc时时彩客户端浏览(195)

    提升PHP安全:8个必须修改的PHP默认配置,提升php

    很明显,PHP Mysql Apache是很流行的web技术,这个组合功能强大,可扩展性强,还是免费的。然而,PHP的默认设置对已经上线的网站不是那么适合。下面通过修改默认的配置文件加强PHP的安全策略!

    0x01:禁用远程url文件处理功能

    像fopen的文件处理函数,接受文件的rul参数(例如:fopen(' function是个不错的选择,在php.ini文件中做如下修改:

    复制代码 代码如下:

    allow_url_fopen = Off

    0x02:禁用注册全局变量

    php在4.2.0以前的版本中,用全局变量作为输入,这个功能叫做register_globals,在web应用中它引起了很多安全问题,因为它允许攻击者在一些情况下很容易的操作全局变量,幸运的是在4.2.0这个功能默认被禁用,它非常的危险,无论在什么情况下都要禁用这个功能。如果某些脚本需要这个功能,那么这个脚本就存在潜在的安全威胁。修改pnp.ini来禁用这个功能:

    复制代码 代码如下:

    register_globals = Off

    0x03:限制php的读写操作

    在很多web开发的过程中,php脚本需要向本地文件系统进行读写操作,比如/var/www/htdocs/files,为了加强安全,你可以修改本地文件的读写权限:

    复制代码 代码如下:

    open_basedir = /var/www/htdocs/files

    0x04:Posing Limit

    限制PHP的执行时间、内存使用量、post和upload的数据是最好的策略,可以做如下的配置:

    复制代码 代码如下:

    max_execution_time = 30  ; Max script execution time
    max_input_time = 60      ; Max time spent parsing input
    memory_limit = 16M       ; Max memory used by one script
    upload_max_filesize = 2M ; Max upload file size
    post_max_size = 8M       ; Max post size

    0x05:禁用错误消息和启用日志功能

    在默认设置中,php会向浏览器输出错误消息,在应用程序的开发过程中,这个默认设置是最合理的配置,然而,它也可以向用户泄漏一些安全信息,例如安装路径和用户名。在已经开发完成的网站中,最好禁用错误消息然后把错误消息输出到日志文件中。

    复制代码 代码如下:

    display_errors = Off
    log_errors = On

    0x06:隐藏PHP文件

     如果没有隐藏PHP文件,我们可以通过多种方法获取服务器PHP的版本,例如使用:

    显然,我们不希望用户可以直接获取你网站服务器的PHP版本,幸运的是,在php.ini中有个开关可以禁用这个功能:

    复制代码 代码如下:

    expose_php = Off

    0x07:安全模式配置

    在默认的情况下,php可以配置为安全模式,在这种模式下,Apache禁止访问文件、环境变量和二进制程序,在安全模式下,存在的最大问题就是只有文件的所有者才能访问这写PHP文件,如果有很多开发者共同开发这个程序,这样的设置就不切实际,当你需要访问一个PHP文件时就需要修改这个文件的所有者,另外一个问题就是其它程序也不能访问这些PHP文件,下面的配置就可以修改文件的的权限为用户组而不是单个用户。

    复制代码 代码如下:

    safe_mode = Off
    safe_mode_gid = On

    通过启用safe_mode_gid,能够使用Apache的这个群组就能够访问PHP文件。安全模式对阻止二进制文件的执行也非常有效,然而,开发者却希望在某些特定情形下能够运行一些二进制文件。在这些特殊的情形下,可以将二进制文件放进一个目录中,比如(/var/www/binaries),可以做如下设置:

    复制代码 代码如下:

    safe_mode_exec_dir = /var/www/binaries

    最后,通过下面的设置,可以访问服务器的环境变量,提供一个以”_“分割的前缀,这样只能访问具有规定前缀的环境变量:

    复制代码 代码如下:

    safe_mode_allowed_env_vars = PHP_

    0x08:限制公共用户对具有特定后缀名的文件的访问

    由于安全的原因,很多具有特定后缀名的文件不能被公共用户所访问,比如.inc后缀的文件,里面包含了一些敏感的信息,比如mysql连接信息,如果没有适当的配置,那么每个用户都能访问这个配置文件,为了加强网站的安全,你需要在. .htaccess文件进行如下的配置:

    复制代码 代码如下:

    <filesmatch>
      Order allow,deny
      Deny from all
    </filesmatch>

    0x09:总结

    PHP的默认配置是面向开发者的,如果网站面向广大的用户,建议重新配置PHP。

    很明显,PHP Mysql Apache是很流行的web技术,这个组合功能强大,可扩展性强,还是免费的。...

    最后,通过下面的设置,可以访问服务器的环境变量,提供一个以”_“分割的前缀,这样只能访问具有规定前缀的环境变量:

    Linux运维之WEB架构深度优化PHP,linuxweb

    WEB架构深度优化PHP

    一、PHP引擎缓存加速优化(4种)

    1、eAccelerator

    2、XCache

    3、APC

    4、Zend

    二、使用tmpfs作为缓存加速缓存的目录(可用rc.local或fstab来自动挂载)

    mount -t tmpfs -o size=16G tmpfs /dev/shm

    mount –t tmps /dev/shm /tmp/eaccelerator

    只要是临时目录,都可以用tmpfs,如上传图片缩略图临时处理目录和其它加速器的临时目录

    三、php.ini参数调优

    无论Apache还是Nginx,针对php.ini都是适合的。而php-fpm.conf适合nginx fcgi的配置。一定是先选择产品环境的php.ini(php.ini-production),再此基础上进行下面的调优。

    1、打开php的安全模式

    PHP的安全模式是PHP非常重要的内嵌的安全机制,能够控制一些PHP中的函数的执行,如system()等,同时把很多文件操作的函数进行了权限控制。默认是没有打开的

    该参数配置如下:

    #第338行

    safe_mode = Off

    #修改为:

    safe_mode= On

    2、用户组安全

    当safe_mode打开后,如果safe_mode_gid没是被关闭,那么php脚本能够对文件进行访问,而且相同组的用户也能够对文件进行访问,所以建议设置为:safe_mode_gid = off。PHP5.3.27默认为关闭,可能不用设置。

    3、关闭危险函数

    (1)如查打开了安全模式,那么函数禁止是可以不需要的,但是为了安全考虑,还是关闭危险函数。方法如下:

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

    (2)如果要禁止任何文件和目录的操作,那么说需要关闭很多文件操作(一定要确认应用程序是否调用了这些操作)

    disable_functions=chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,

    delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,

    fwrite,chgrp,chmod,chown

    4、关闭PHP版本信息在Http头中的泄漏

    为了防止黑客获取服务器中PHP版本的信息,应当关闭PHP版本信息在Http头的显示。curl和telnet都不会显示PHP版本信息了。

    该参数配置如下:

    #第435行

    expose_php = On

    #修改为:

    expose_php= Off

    5、关闭注册全局变量

    在PHP中提交的变量,包括使作POST或GET提交的变量,都将自动注为全局变量,能够直接访问,这对程序开发非常方便,但对服务器非常不安全,所以应当关闭注册全局变量。如查打开这个参数,入侵者可以通过提交一些特殊请求来绕过验证。参数register_globals默认为关闭状态,打开会非常危险

    该参数配置如下:

    #第435行

    register_globals= Off

    6、打开magic_quotes_gpc防止SQL注入

    SQL注入是非常危险的问题,轻则网站后台被入侵,重则整个服务器沦陷。php.ini中的参数magic_quotes_gpc如查打开后会自动把用户提交的SQL查询进行转换,比如把单引号"'"转化为"'"等,对防止SQL注入有重大作用。所以推荐把magic_quotes_gpc参数打开,默认是Off关闭的。

    该参数配置如下:

    #第756行

    magic_quotes_gpc = Off

    #修改为:

    magic_quotes_gpc= On

    7、错误信息控制

    (1)关闭错误显示

    一般情况下,PHP在没有连接到数据库或其它情况会提示错误,提示中会包含PHP脚本当前的路径信息或查询的SQL语句等信息,是不安全的,所以需要设置相关参数禁止错误提示。在服务器端使用错误日志代替。所以推荐把display_errors参数关闭,PHP5.3.27默认是Off关闭的。

    该参数配置如下:

    #第538行

    display_errors= Off

    (2)控制错误显示级别

    如果一定要向客户端显示错误信息,则一定要设置好显示错误的级别,一般是只显示警告以上的信息。对应参数为error_reporting

    该参数配置如下:

    #第521行

    error_reporting = E_ALL& ~E_DEPRECATED

    #修改为:

    error_reporting= E_WARNING & E_ERROR

    (3)启用错误日志记录

    建议在关闭display_errors参数后,能够把错误信息记录下来,便于查找服务器错误的原因,需要将错误记录在错误日志文件中。可以打开log_errors参数,PHP5.3.27默认是On打开的。

    该参数配置如下:

    #第559行

    log_errors= On

    (4)指定错误日志记录文件

    指定error_log的路径,PHP5.3.27默认是注释掉的。指定的错误日志记录文件必须允许apache用户和组具有写权限。

    该参数配置如下:

    #第646行,新增一行

    error_log= /app/logs/php_errors.log

    8、对资源限制的参数优化

    (1)设置每个脚本运行的最长时间:max_execution_time

    max_execution_time是设置每个脚本运行的最长时间,可以阻止劣质脚本无休止的占用服务器资源,当无法上传较大的文件或后台备份数据经常超时,则需要调整该设置。该参数只影响脚本本身的运行时间。0表示不限制

    该参数配置如下:

    #第444行,默认就为30秒

    max_execution_time= 30

    (2)设置每个脚本使用的最大内存:memory_limit

    使用memory_limit参数,必须在编译时使用--enable-memory-limit配置选项。如果要取消内存限制,则必须设置为-1。设置该参数后则memory_get_usage()函数将变为可用。

    该参数配置如下:

    #第465行,默认就为128M

    memory_limit= 128M

    (3)设置每个脚本等待输入数据的最长时间:max_input_time

    max_input_time参数是指定每个脚本解析输入数据(POST、GET、upload)的最大允许时间。-1表示不限制。

    该参数配置如下:

    #第454行,默认60秒

    max_input_time= 60

    (4)设置上传文件最大许可大小:upload_max_filesize

    使用upload_max_filesize参数限制上传文件的大小。可根据实际自行调整。

    该参数配置如下:

    #第891行,默认就为2M

    upload_max_filesize= 2M

    9、安全方面的参数优化

    (1)禁止打开远程地址:allow_url_fopen

    记得php include的那个漏洞吗?就是在一个php程序中include了变量,那么入侵者就可以利用这个控制服务器在本地执行远程的一个 php程序,例如phpshell,所以一定要关闭该参数。

    该参数配置如下:

    #第902行

    allow_url_fopen = On

    #修改为:

    allow_url_fopen= Off

    (2)防止Nginx文件类型错误解析漏洞:cgi.fix_pathinfo

    该参数配置如下:

    #第854行

    ;cgi.fix_pathinfo=1

    #修改为:

    cgi.fix_pathinfo=0

    10、调整PHPSession信息存放类型和位置

    (1)调整PHP Session信息存放类型和位置

    PHP Session默认是以文件类型放在/tmp目录下的。如果是负载均衡 WEB集群的架构,则Session会话保持将会是一个问题,解决办法一是在负载均衡端使用Hash算法,将会话始终发送到一台Web服务器上;二是采用缓存服务器(Memcache、Redis)存放所有Session会话,访问时到缓存服务器上调取Session会话,达到Session会话保持的作用

    该参数配置如下:

    #第1461行

    session.save_handler =files

    #修改为:

    session.save_handler= memcache

    #第1490行

    ;session.save_path ="/tmp"

    #修改为:

    session.save_path= "tcp://10.0.0.18:11211"#memcache的IP和端口,采用tcp协议

    (2)采有Memcache存放PHPSession的优缺点

    a、优点

    (i)读写速度会比普通files时快得多

    (ii)可以解析多个服务器共用session的难题

    b、缺点

    (i)session数据都保持在memory中,持久化方面有所欠缺,但对session数据来说不是问题

    (ii)也可以使用其它持久化系统存储session。如redis,ttserver

    (iii)高性能高并发场景时,cookies的效率比session要好很多,因此,很多大网站都会用cookies来解决会话共享问题。

    四、php-fpm.conf参数调优

    pm.max_children= 1024 #子进程的最大数量

    pm.start_servers= 16 #启动时的进程数量

    pm.min_spare_servers= 5 #最小空间进程数

    pm.max_spare_servers= 20 #最大空间进程数

    pm.max_requests= 2048 #扩大每个子进程的最大请求数

    slowlog= /application/php/logs/$pool.log.slow #指定慢查询的记录日志

    request_slowlog_timeout= 10 #指定请求超时参数

    WEB架构深度优化PHP 一、PHP引擎缓存加速优化(4种) 1、eAccelerator 2、XCache 3、APC 4、Zend 二、使用tmpfs作为...

      [ 打开安全模式 ]

    Warning 本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除

    allow_url_fopen = Off

      当运行在安全模式下,虽然不会引起错误,但是 putenv 函数将无效。同样的,其他一些尝试改变PHP环境变量的函数set_time_limit, set_include_path 也将被忽略。

     

    限制PHP的执行时间、内存使用量、post和upload的数据是最好的策略,可以做如下的配置:

      chdir , move_uploaded_file, chgrp, parse_ini_file, chown, rmdir, copy, rename, fopen, require, highlight_file, show_source, include, symlink, link, touch, mkdir, unlink

    另外,由于启用了安全模式后,由于会对比文件的拥有者和文件的执行者是否是一个人,所以会减慢执行效率。

    复制代码 代码如下:

    您可能感兴趣的文章:

    • PHP安全配置
    • php错误日志简单配置方法
    • PHP中错误与异常的日志记录用法分析
    • php中几种常见安全设置详解
    • PHP安全配置
    • php安全配置记录和常见错误梳理(总结)

     

    复制代码 代码如下:

      打开或者关闭PHP的安全模式是利用php.ini中的safe_mode选项。如果要激活安全模式给当前所有共享Web服务器的用户,只要设置配置选项为:safe_mode

    On当函数在访问文件系统的时候将进行文件所有者的检查。缺省情况下,会检查该文件所有者的用户ID,当你能够修改文件所有者的组ID(GID)为 safe_mode_gid 选项所指定的。如 果你有一个共享库文件在你的系统上,当你碰到需要include或require的时候,那么你可以使用 safe_mode_include_dir 选项来设置你的路径,保证你的代码正常工作。(包含路径: 如果你想要使用 safe_mode_include_dir 选项包含更多的包含路径,那么你可以象 include_path 选项一样,在Unix/Linux系统下使用冒号进行分割,在Windows下使用分号进行分割)比如你想要在安全模式下包含 /usr/local/include/php 下的文件,那么你可以设置选项为:safe_mode_include_dir = /usr/local/include/php如果你的包含的文件是需要执行的,那么你可以设置 safe_mode_exec_dir 选项。比如你需要 /usr/local/php-bin 路径下的文件是可以执行的,那么可以设置选项为:safe_mode_exec_dir = /usr/local/php-bin(可执行:如果你执行的程序在 /usr/bin 目录下,那么你可以把这些的二进制文件,连接到你指定选项下能够执行的路径)如果你想设置某些环境变量,那么可以使用 safe_mode_allowed_env_vars 选项。这个选项的值是一个环境变量的前缀,缺省是允许 PHP_ 开头的环境变量,如果你想要改变,可以设置该选项的值,多个环境变量前缀之间使用逗号进行分割。比如下面允许时区的环境变量 TZ ,那么修改该选项的值为:safe_mode_allowed_env_vars = PHP_,TZ【 其他的安全特征 】除了安全模式以外,PHP还提供了许多其他许多特征来保证PHP的安全。

      [ 隐藏PHP ]

      你能够在php.ini里使用 expose_php 选项来防止Web服务器泄露PHP的报告信息。如下:expose_php = On利用整个设置,你能够阻碍一些来自自动脚本针对Web服务器的攻击。通常情况下,HTTP的头信息里面包含了如下信息:Server: Apache/1.3.33 (Unix) PHP/5.0.3 mod_ssl/2.8.16

      OpenSSL/0.9.7c在 expose_php 选项打开以后,PHP的版本信息将不包含在上面的头信息里。当然,用户访问网站的时候同样能够看到 .php 的文件扩展名。如果你想整个的使用不同的文件扩展名,你需要在 httpd.conf 中找到如下这行:AddType application/x-httpd .php你就可以修改 .php 为任何你喜欢的文件扩展名。你能够指定任意多个的文件扩展名,中间使用空格进行分割。如果你想在服务器端使用PHP来解析 .html 和 .htm 文件的时候,那么你设置选项如下:AddType application/x-httpd .html .htm(解析HTML:配置你的Web服务器使用PHP去解析所有的HTML文件,但是如果非服务器端代码也需要PHP去解析,会影响服务器的性能。静态页面你可以使用不同的扩展名,这样能够消除对PHP脚本引擎的依赖,增强性能。)

      [ 文件系统安全 ]

      安全模式限制了脚本所有者只能访问属于自己的文件,但是你可以使用 open_basedir 选现来指定一个你必须访问的目录。如果你指定了一个目录,PHP将拒绝访问除了该目录和该目录子目录的其他目录。open_basedir 选项能够工作在安全模式之外。限制文件系统只能访问 /tmp 目录,那么设置选项为:open_basedir = /tmp[ 函数访问控制 ]你能够在 disable_functions 选项中使用逗号分割来设定函数名,那么这些函数将在PHP脚本中被关闭。这个设置能够工作在安全模式之外。disable_functions = dl当然,同样的你能够使用 disable_classes 选项来关闭对一些类的访问。

      [ 数据库安全 ]

      假设你的PHP脚本中包含一个基于表单值来执行的Mysql查询:$sql = “UPDATE mytable SET col1 = ” .

    转自:http://hi.baidu.com/sjow001/blog/item/07f14997a2058e45d0135e7d.html

    由于安全的原因,很多具有特定后缀名的文件不能被公共用户所访问,比如.inc后缀的文件,里面包含了一些敏感的信息,比如mysql连接信息,如果没有适当的配置,那么每个用户都能访问这个配置文件,为了加强网站的安全,你需要在. .htaccess文件进行如下的配置:

      当安全模式打开的时候,以下函数列表的功能将会受到限制:

    以下是一些和安全模式相关的配置选项
    safe_mode_gid=on|off
    次指令会修改安全模式的行为,即从执行前验证UID改为验证组ID。例如,如果Mary和John处于相同的用户组,则Mary的脚本可以对John的文件调用fopen()。
    safe_mode_include_dir=string
    可以使用指令safe_mode_include_dir指示多个路径,启用安全模式时在这些路径中将忽略安全模式。例如,你可以使用此函数指定一个包含不同模板的目录,致谢模板可能会继成到一些用户网站。可以指定多个目录,在基于UNIX的系统各目录用冒号分隔,在Windows中用分号分隔。
    注意,如果指定某个路径但未包含最后的斜线,则该路径下的所有目录都会忽略安全模式设置。例如,如果设置次指令为/home /configuration,表示/home/configuration/templates/和/home/configureation /passwords都排除在安全模式限制之外。因此,如果只是要排除一个目录或一组目录不受安全模式设置的限制,要确保每个目录都包括最后的斜线。
    safe_mode_env_vars=string
    当启用安全模式时,可以只用次指令允许执行用户的脚本修改某些环境变量。可以允许修改多个变量,每个变量之间用逗号分隔。
    safe_mode_exec_dir=string
    次指令指定一些目录,其中的系统程序可以通过诸如system()、exec()或passthru()等函数执行。为此必须启用安全模式。此指令有一个奇怪的地方,在所有操作系统中(包括Windows),都必须使用斜线(/)作为目录的分隔符。
    safe_mode_protected_env_vars=string
    此指令保护某些环境变量不能被putenv()函数修改。默认情况下,变量LD_LIBRARY_PATH是受保护的,因为如果在运行时修改这个变量可能导致不可预知的结果。关于此环境变量的更多信息,请参考搜索引擎或Linux手册。注意,本届中声明的所有便来弄个都覆盖 safe_mode_allowed_env_vars指令中声明的变量。

    复制代码 代码如下:

    【 安全模式 】

    php安全模式:safe_mode=on|off
    启用safe_mode指令将对在共享环境中使用PHP时可能有危险的语言特性有所限制。可以将safe_mode是指为布尔值on来启用,或者设置为 off禁用。它会比较执行脚本UID(用户ID)和脚本尝试访问的文件的UID,以此作为限制机制的基础。如果UID相同,则执行脚本;否则,脚本失败。
    具体地,当启用安全模式时,一些限制将生效。
    1、所有输入输出函数(例如fopen()、file()和require())的适用会受到限制,只能用于与调用这些函数的脚本有相同拥有者的文件。例如,假定启用了安全模式,如果Mary拥有的脚本调用fopen(),尝试打开由Jonhn拥有的一个文件,则将失败。但是,如果Mary不仅拥有调用 fopen()的脚本,还拥有fopen()所调用的文件,就会成功。
    2、如果试图通过函数popen()、system()或exec()等执行脚本,只有当脚本位于safe_mode_exec_dir配置指令指定的目录才可能。
    3、HTTP验证得到进一步加强,因为验证脚本用于者的UID划入验证领域范围内。此外,当启用安全模式时,不会设置PHP_AUTH。
    4、如果适用MySQL数据库服务器,链接MySQL服务器所用的用户名必须与调用mysql_connect()的文件拥有者用户名相同。
    安全模式和禁用的函数
    下面是启用safe_mode指令时受影响的函数、变量及配置指令的完整列表:
    apache_request_headers() backticks()和反引号操作符 chdir()
    chgrp()     chmode()    chown()
    copy()     dbase_open()    dbmopen()
    dl()     exec()     filepro()
    filepro_retrieve()   filepro_rowcount()   fopen()
    header()    highlight_file()   ifx_*
    ingres_*    link()     mail()
    max_execution_time()   mkdir()     move_uploaded_file()
    mysql_*     parse_ini_file()   passthru()
    pg_lo_import()    popen()     posix_mkfifo()
    putenv()    rename()    zmdir()
    set_time_limit()   shell_exec()    show_source()
    symlink()    system()    touch()

    0x04:Posing Limit

      PHP的安全模式提供一个基本安全的共享环境,在一个有多个用户帐户存在的PHP开放的Web服务器上。当一个Web服务器上运行的PHP打开了安全模式,那么一些函数将被完全的禁止,并且会限制一些可用的功能。

    复制代码 代码如下:

      同样的,一些PHP扩展中的函数也将会受到影响。(加载模块:在安全模式下dl函数将被禁止,如果要加载扩展的话,只能修改php.ini中的扩展选项,在PHP启动的时候加载)

    本文由1010cc时时彩经典版发布于1010cc时时彩客户端,转载请注明出处:1010cc时时彩经典版:8个必得修改的PHP私下认可配

    关键词: