解决办法:
不允许PHP使用网络,把php.ini里的allow_url_fopen 值改为allow_url_fopen = Off
如果不行
;extension=php_sockets.dll (限制使用sockets.dll);ignore_user_abort = On 这两项前加上分号。但默认这两项就是这样设置的。防止某些同志手动打开了的。
**** 设置“register_globals”为“off”
这个选项会禁止PHP为用户输入创建全局变量,也就是说,如果用户提交表单变量“hello”,PHP不会创建“$ hello”,而只会创建“HTTP_GET/POST_VARS['hello']”。这是PHP中一个极其重要的选项,关闭这个选项,会给编程带来很大的不便。
*** 设置“safe_mode”为“on”(注意:开启这个后phpmyadmin将可能无法访问,原因寻找中)
打开这个选项,会增加如下限制:
1.限制哪个命令可以被执行
2.限制哪个函数可以被使用
3.基于脚本所有权和目标文件所有权的文件访问限制
4.禁止文件上载功能
这对于ISP来说是一个伟大的选项,同时它也能极大地改进PHP的安全性。
** 设置“open_basedir”
这个选项可以禁止指定目录之外的文件操作,有效地消除了本地文件或者是远程文件被include()的攻击,但是仍需要注意文件上载和session文件的攻击。
** 设置“display_errors”为“off”,设置“log_errors”为“on”
这个选项禁止把错误信息显示在网页中,而是记录到日志文件中,这可以有效的抵制攻击者对目标脚本中函数的探测。
* 设置“allow_url_fopen”为“off”(和上面第一步一样重复)
这个选项可以禁止远程文件功能,极力推荐!
然后重启IIS。
把C/WINDOWS下的PHP.INI设置为只读防止被黑客篡改,以后修改这个PHP.INI的时候停止掉IIS,这样安全!
另外还可以考虑
考虑到服务器PHP安全角度
*如果是独立服务器的用户可以修改php配置文件中的php.ini,将register_globals=On改为register_globals=Off,然后重启IIS. (由于register_globals设置控制PHP变量访问范围,如果开启会引起不必要的安全问题,所以这里对其进行了强制关闭,如果站长的空间不支持,可以采用以下几种办法进行修改,供广大站长参考: )