2

我想要REGEX一个筛选/match QUERY_STRINGwhen 包含参数,如 theesephp|data|ftp|http|..|/|://和任何其他可用于远程文件包含的字符。

感谢大家的时间:

PS:我知道这最好用 htaccess 来完成,但我现在需要一个正则表达式。

4

2 回答 2

3

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

于 2011-07-13T10:51:43.163 回答
2

如果您想防止远程文件包含,您可以简单地禁用流包装器,例如

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

以及任何其他 URL 感知功能

  • disable allow_url_fopen- 此选项启用 URL-aware fopen 包装器,允许访问 URL 对象,如文件

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

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

或使用filter_*功能

if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
于 2011-07-13T11:03:29.330 回答