当前位置:博客首页>>PHP >> 阅读正文

Windows+IIS+PHP安全配置之php篇

作者: 郑晓 分类: PHP 发布于: 2013-05-24 21:43 浏览(7,073) 评论(9)


既然是进行windows下IIS+PHP的安全配置,首先要进行安全配置的就是PHP了。估计大多数新手所了解的配置好php环境只是能使服务器正常解析PHP,但并没有做出安全方面的配置,里面还有很多的默认设置是不安全的。在网上很多的配置php环境的教程中也并没有介绍PHP安全方面的配置。

要配置PHP,首先想到的文件是什么?对,php.ini,现在让我们先来了解一些php.ini的基本概念。在php.ini中,配置指令的格式如下:directive = value 指令名(directive)是大小写敏感的!所以”foo=bar”不同于”FOO=bar”。值(value)可以是:
1. 一个数字,整数或浮点数,如:0,20,1024,0.5等等)
2. 一个字符串,如:”foo”、”x:\php\ext”
3. 一个PHP常量(如:E_ALL,M_PI)
4. 一个INI常量(On,Off,none)
5. 一个表达式(如:E_ALL & ~E_NOTICE)
还有另外一个是设置布尔值,1为On就是开启,0为Off就是关闭。php.ini分了很多部分,例如:模块配置,php全局配置,数据库配置,and so on…(卖弄一下三级半的E文)。

了解了基本概念以后我们就可以开始进行配置了,Let’s go!

1、register_globals
说明:这个配置影响到php如何接收传递过来的参数,说白了register_globals的意思就是注册为全局变量,所以当该参数为值On的时候,传递过来的值会被直接的注册为全局变量直接使用,而当该参数值为Off的时候,我们需要到从特定的数组里去得到它。很多的php漏洞一大部分是因为Register_Globals为On的时候被利用的,所以强烈推荐将这个参数修改成Off,php目前的最高版中此参数都是默认是Off的,如果你用的版本比较老的话一定要修改这里。

2、magic_quotes_gpc
说明:如果你把magic_quotes_gpc设置成了Off,那么php就不会对4种字符’ (单引号), ” (双引号), \ (反斜线) 和 空字符进行转义,那这样的话就会造成服务器可能会被非法注入的可能。但是如果你把Magic_quotes_gpc设置成On的话,php就会给以get、post等方式提交来的变量中含有的这四种字符加上\反斜扛进行转义,这样就会大大地提高php的安全性。强烈推荐将Magic_quotes_gpc设置为On。

3、display_errors
说明: php的display_errors参数就是帮助开发者定位和确定这些错误的。可是如果php提供的这些信息被黑客了解到的话,这就不妙了。这对于黑客来说可是非常重要的信息,因为很多时候的渗透都需要知道web目录,例如webshell的写入等等。所以强烈推荐大家把这个参数设置成Off。

4、safe_mode
说明:就是我们常说的安全模式(在一些vps控制面板和一些程序后台经常会看到这个)。php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system()等函数,同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的访问,比如/etc/passwd,但是默认的php.ini是没有打开安全模式的,把它打开。safe_mode = on。

5、open_basedir
说明:使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问不应该访问的文件,一定程度上限制了webshell的危害,一般可以设置为只能访问网站目录(假设你的网站目录为E:\www):open_basedir = E:\www

6、disable_functions
说明:使用disable_functions可以限制一些对于系统来说威胁很大的函数。
例如,我们通常在配置完php环境后,都会骄傲的使用phpinfo()函数来打印php系统信息,这是确实是很爽的,但对于一些骇客来说更爽,因为phpinfo()函数可以打印出绝大多数php的环境信息。还有入侵者可以利用system(),exec()等函数来执行一些系统命令等等。所以确定我们环境没问题后,需要及时禁用掉这些函数。推荐过滤的函数如下。disable_functions = phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server。如果对某个函数不了解的话,可以google搜索得到函数的作用,然后来决定您自己的服务器(或您的网站程序)是否需要禁用。

7、com.allow_dcom
说明:Windows平台下的PHP脚本平台存在一个安全漏洞,使得PHP设置即使在安全模式下(safe_mode),仍旧允许攻击者使用COM()函数来创建系统组件来执行任意命令。漏洞出现的原因是由于在安全模式下的PHP平台虽然system();pathru()函数被禁止,但是com.allow_dcom的设置依旧是为true。以至于攻击者可以使用COM()函数创建系统组件对象来运行系统命令。如果是默认的Apache设置或者Web服务器以Loacalsystem权限或Administrators权限运行,攻击者可以使用这个漏洞来提升权限。所以我们必须要关闭掉com.allow_dcom,这个参数默认是True,我们需要把这个参数修改成com.allow_dcom=false。

8、expose_php
说明:这个参数决定是否暴露PHP被安装在服务器上。如果这个参数设置为On的话就会把php的版本等泄露出来了。例如默认会在在服务器的信息头中加上其签名:X-Powered-By: PHP/5.3.7。推荐设置为Off。

好了,关于php.ini方面的设置今天先讲到这里,现在可以ctrl+s一下,然后去重启你的IIS了,否则你的修改不会生效。

↓↓微信扫码请我吃份正宗的烤面筋,可带劲啦↓↓
       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/windows-iis-php-security-config.html

Windows+IIS+PHP安全配置之php篇:目前有9 条留言

用户评论头像 伤心的歌发表于 2014年08月30日 23:30[回复]

博主似乎说的是php的安全配置, 而不是iis哦?
换句话说, 你这些配置, 似乎在Apache中也可以用这种方法啊!

用户评论头像 湖南安化黑茶发表于 2013年06月05日 14:01[回复]

讲的不错,支持一下!!

湖南安化黑茶:http://www.zhujiuping.com

用户评论头像 如梦幽兰发表于 2013年06月03日 21:16[回复]

不错。
欢迎来访:http://threem.blog.tianya.cn

用户评论头像 充值软件发表于 2013年06月02日 20:01[回复]

博主威武,每次都能让人耳目一新

用户评论头像 楚狂人网赚发表于 2013年06月02日 18:00[回复]

专业啊,支持了

用户评论头像 佰草集怎么样发表于 2013年05月30日 14:36[回复]

让佰草集旗舰店化妆品为你的美肤护航!

用户评论头像 上海龙凤发表于 2013年05月29日 15:51[回复]

这个还真要了解下

用户评论头像 排插多少钱发表于 2013年05月28日 17:43[回复]

🙂 认真看了,你的站不错,写的内容页丰富,怎么就是人气不高?继续加油啊!

用户评论头像 花开问叶发表于 2013年05月26日 13:24[回复]

不错的站,继续加油!