包括config.php“里面外出”,代码说明

时间:2012-12-02 10:26:55

标签: php regex input preg-replace security

我正在研究如何在网站的任何网页中有效地包含config.php,我在stackoverlow上找到了great answer

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

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

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

3 个答案:

答案 0 :(得分:0)

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

我相信作者这样做是为了尝试清理来自$_GET的输入,这些输入的价值在你做之前不应该被信任。

有关Web应用程序安全性的问题,请咨询The Open Web Application Security Project或OWASP。他们有PHP Security Leading Practice的页面以及PHP Security Cheat Sheet

答案 1 :(得分:0)

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

答案 2 :(得分:0)

preg_replace用于从page变量中删除非字母数字字符。

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

考虑用户是否请求了网页http://www.example.com/index.php?page=/etc/passwd 如果不清理输入,域的密码文件将很乐意转储到屏幕上。

模式\W+删除无效字符,例如'/'字符,可防止此类简单攻击。