近期,一些站点上转载一篇《Discuz! 论坛程序泄漏物理路径》的文章,甚至制作了一些专用工具。更有人将他归结于程序漏洞,其实大家不必过于紧张。
1. 文章中和工具均利用了 php本身的一些函数如preg_match,urlencode等函数在处理参数时没有正确处理好字符串和数组,导致在传递一个恶意参数的时候产生一个warning级别的错误,利用这个错误来了解论坛的路径。此种方式的攻击或者探测,不会对论坛的原有数据和权限产生任何威胁。
2. 论坛程序泄漏物理路径没有直接性危害。只有服务器有其他安全问题的时候,程序物理路径可以让攻击者了解站点的路径。
3. 由于部分站长经常安装一些插件,或者自己添加功能调试程序,为了及时的找到程序的出错调试信息,也会把错误日志打开,当出现问题的时候可以尽快排查,或者提供给技术人员协助解决。PHP错误信息的出现属于是正常现象。
4. Discuz! 程序中,为了保证对论坛的所有信息的防护,早已经加入了安全设置,可以避免此类信息的出现。
因此有人利用这一事情,认为Discuz! 有安全漏洞,或者要求官方出修补方案,其实是完全没有必要的。
如果您对站点的安全或者程序的安全仍旧存有疑虑,或者不想让其他人知道自己站点的任何信息,您可以通过以下三种方式,关闭PHP出错信息。(选择一种或者多种均可)
【方法1】 利用 Discuz! 自身提供的安全设置,屏蔽此类错误信息。修改 论坛文件 config.inc.php 。
查找
复制内容到剪贴板
代码:
$errorreport = 1;修改为
复制内容到剪贴板
代码:
$errorreport = 0;这样,当程序出错的时候,所有的错误报告仅仅报告给论坛的管理人员,普通会员或者游客无法见到错误信息。
【方法2】强制关闭论坛所有错误!(对任何人均有效)
修改 论坛文件 common.inc.php 。
查找
复制内容到剪贴板
代码:
error_reporting(E_ERROR | E_WARNING | E_PARSE);修改为
复制内容到剪贴板
代码:
error_reporting(0);【方法3】关闭整个站点任何程序的错误!
修改服务器 php.ini ,关闭所有错误报告。(具体方法参见 php 手册)