2

我现在正在自学 php,并且正在使用 php include 开发一些简单的网站以简化页面创建过程。我已经在这个网站上搜索了使它安全的方法,但是,作为一个菜鸟,我总是害怕搞砸。

<?php
    $siteArticles = array('instalacoes','galeria','regiao-e-historia','precos','contactos');
    if( isset($_GET['page']) ){
        if( in_array($_GET['page'], $siteArticles, true) && file_exists('pt/'.'rbs-article-'.$_GET['page'].'.php') ){ 
            include('pt/'.'rbs-article-'.$_GET['page'].'.php'); 
        }
    }else{
        include('pt/rbs-article-home.php');
    }
?>

如您所见,它首先检查页面是否允许通过数组,然后在名称文件中添加前缀。

我的问题是,这有多安全?

感谢您的时间。

4

1 回答 1

3

它是安全的。in_array()检查是使它安全的原因。不可能仅仅因为请求的页面必须与白名单数组中的元素之一完全匹配,就对该代码执行本地文件包含 (LFI) 攻击。

于 2013-02-15T11:43:02.093 回答