使用PHP导航的安全性如何



如果i 想将其用作"导航系统"?

,这有多安全?
$p="main";              
if(isset($_GET['page'])){
    $p=$_GET['page'];
    if($p!=basename($p) || !preg_match("/^[A-Za-z0-9-_]+$/",$p) || $p=="index" || !file_exists($p.".php"))
        $p="error";
    }
include($p.".php");

实际上我知道,这不是很好,一个原因是:您不能包括子文件夹。主要的问题是,它的安全程度。

我认为以下脚本为您提供了一个良好,安全且易于管理的导航。

$allowed_pages = array(
    'home' => 'main.php',
    'contacts' => 'contacts.php',
    'foo' => './demo_folder/foo.php',
);
if(isset($_GET['page'])
    && array_key_exists($_GET['page'], $allowed_pages))
{
    $p = $_GET['page'];
    $file_to_include = $allowed_pages[$_GET['page']];
    include $file_to_include;
}
else
{
    //fallback for when redirect does not work properly
    echo 'Page not found. Return to <a href="./">main page</a>';
    //redirect to main page
    header('Location: ./');
    exit();
}

相关内容

  • 没有找到相关文章

最新更新