包含文件时的安全注意事项

Yso*_*oL8 2 php security get include

我准备基于$ _GET数组在php中设置请求路由系统.

例如,对于?r=login我使用的url 包含myfiles/".$_GET['r'].".php"; 哪个会自动指向myfiles/login.php

我知道我需要清理get输入,但我担心因为有可能恶意重定向包含.谁能建议如何防止这种情况?我也可以在调用之前检查文件是否存在吗?

我有一些自己的想法,我只是想知道我没有错过任何考虑.

Sar*_*raz 5

不包含通过url指定的文件总是一个好主意.如果您仍想这样做,请使用switch语句或任何语句array来过滤内容并仅包含您需要的内容:

例1:

$page = $_GET[...];

switch($page){
  case 'login': include 'login_page.php'; break;
  // and so on
  default: die("bye bad guy !");
}
Run Code Online (Sandbox Code Playgroud)

例2:

$page = $_GET[...];

$pages = array('page1.php', 'page2.php', 'page3.php');

if( in_array($page, $pages) )
{
    include($page);
{
else
{
   die("bye bad guy !");
} 
Run Code Online (Sandbox Code Playgroud)

我建议你看一下这些相关的安全问题: