我希望REGEX
到过滤器 /匹配QUERY_STRING
,只要包含像theese php|data|ftp|http|..|/|://
这样的参数以及可以使用的任何其他字符用于远程文件包含。
感谢所有人:
PS:我知道用htaccess做得更好,但我现在需要一个正则表达式。答案 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) {
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {