0

我正在研究如何在网站的任何网页中有效地包含 config.php,我在 stackoverlow 上找到了一个很好的答案。

用户“user187291”就如何包含它给出了一个非常有趣的答案,推荐了一种“由内而外”的方法。

$page = isset($_GET['page']) 
   ? preg_replace("/\W+/", "", $_GET['page'])
   : "home";
 include "$page.php";

问题是,他为什么要使用 preg_replace?

4

3 回答 3

0

preg_replace()函数采用正则表达式的第一个参数并替换与第三个参数中的第二个参数匹配的任何内容。

我相信作者这样做是为了清理来自 的输入$_GET,除非你这样做,否则你不应该相信他的价值观。

有关 Web 应用程序安全性的问题,我咨询了 The Open Web Application Security Project或 OWASP。他们有PHP 安全领先实践页面以及PHP 安全备忘单

于 2012-12-02T10:32:02.303 回答
0

\W 检测所有不在 [A-Za-z0-9_] 中的字符(并在此替换的情况下将其删除),因此它是为了保护页面参数。

于 2012-12-02T10:32:25.640 回答
0

preg_replacepage用于从变量中去除非字母数字字符。

这是一个非常薄弱的​​安全尝试。该代码试图防止注入攻击。

考虑如果用户请求页面http://www.example.com/index.php?page=/etc/passwd 没有清理输入,域的密码文件会很高兴地转储到屏幕上。

该模式\W+会删除无效字符,例如“/”字符,从而防止此类简单攻击。

于 2012-12-02T10:34:06.493 回答