我正在研究如何在网站的任何网页中有效地包含config.php,我在stackoverlow上找到了great answer。
用户“user187291”就如何包含它提出了一个非常有趣的答案,推荐了“由内而外”的方法。
$page = isset($_GET['page'])
? preg_replace("/\W+/", "", $_GET['page'])
: "home";
include "$page.php";
问题是,为什么他使用preg_replace?
答案 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+
删除无效字符,例如'/'字符,可防止此类简单攻击。