php - 使用REGEX过滤/清理QUERY_STRING以防止RFI攻击

时间:2011-07-13 10:49:51

标签: php regex include query-string sanitize

我希望REGEX过滤器 /匹配QUERY_STRING,只要包含像theese php|data|ftp|http|..|/|://这样的参数以及可以使用的任何其他字符用于远程文件包含。

感谢所有人:

PS:我知道用htaccess做得更好,但我现在需要一个正则表达式。

2 个答案:

答案 0 :(得分:3)

不要,如果这是你的安全,它可能会破裂。在包含/要求任何内容之前,将白名单和/或检查是否存在本地文件。更好的是:不要让任何人对你在外部变量中包含的文件有任何直接影响。

答案 1 :(得分:2)

如果您想阻止远程文件包含,您可以简单地disable the stream wrappers,例如

  • allow_url_include - 此选项允许使用具有以下功能的URL感知fopen包装器:include(),include_once(),require(),require_once()。

以及任何其他网址感知功能

  • disable allow_url_fopen - 此选项启用支持URL的fopen包装器,支持访问文件等URL对象

如果要检查查询参数是否为网址,可以使用parse_url

if (parse_url($url) === FALSE) {

或使用filter_* functions

if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {