2009-08-23 79 views
0

我正在一个好用户输入网站域名http://www.mysite.com的网站上工作。PHP,RFI,并保持安全

但我一直在阅读关于远程文件包含(RFI),它非常有趣。只需加入?page = http://www.mysite.com/index.php?或附近的东西,我得到某种类型的错误(500)。 其他人民网站使用wordpress/PHP,如果我这样做我也得到一个错误。

我不知道这是否意味着脚本已经运行,但我怎样才能保持输入清洁?我已经使用REGEX,但我希望用户能够输入任何网站并相应地处理它。我当然不希望脚本中的任何地方出现严重的安全漏洞。

晚安这里在波士顿在东海岸[EST]

回答

1

HTTP 500错误你看到听起来似乎mod_security,为Apache模块,正在产生。 mod_security根据一组安全规则扫描所有输入,其中一个可能正在检查RFI。这是第一道防线。

为了防止RFI,您还可以做其他一些事情。首先,从PHP 5.2.0起,有一个选项allow_url_include。当设置为false时,这将导致PHP在包含URL的文件时引发错误。大多数人会希望将此设置设置为虚假

此外,还有消毒您的输入。有很多种方法可以做到这一点,确实像使用正则表达式,但你也可以看看filter extension。只要确保足够严格,你就不会想让某人潜入../../,并且在文件层次结构中查看一个或两个以上级别。

安全文件访问最安全但有时也是非常不切实际的方法是使用允许包含的确切文件的白名单。