我准备基于$ _GET数组在php中设置请求路由系统。
例如,对于网址?r=login
我会使用包含myfiles/".$_GET['r'].".php";
哪个会自动指向myfiles / login.php
我知道我需要清理get输入,但我担心因为有可能恶意重定向包含。谁能建议如何防止这种情况?我也可以在调用之前检查文件是否存在吗?
我有自己的一些想法,我只是想知道我没有错过任何考虑。
答案 0 :(得分:5)
最好不要包含通过网址指定的文件。如果您仍想这样做,请使用switch
语句或任何array
语句来过滤内容并仅包含您需要的内容:
示例1:
$page = $_GET[...];
switch($page){
case 'login': include 'login_page.php'; break;
// and so on
default: die("bye bad guy !");
}
示例2:
$page = $_GET[...];
$pages = array('page1.php', 'page2.php', 'page3.php');
if( in_array($page, $pages) )
{
include($page);
{
else
{
die("bye bad guy !");
}
我建议你看看这些相关的安全问题:
答案 1 :(得分:1)
如果可以,请使用白名单。如果你不能,那么: