这不安全吗? PHP - PDO

时间:2014-02-03 12:24:52

标签: php security pdo

好吧,所以我设置了一个小型系统,我可以通过管理面板添加页面,并让它们出现在主站点上。除了在管理面板中创建的html页面,我还有大约两个PHP页面,其中包含存储在数据库中的查询。

无论如何我使用'Eval'来调用它们,我读过它是不安全的。

虽然因为它只有来自管理面板的html代码[php代码被禁止并且如果在这些页面中发布就不会起作用]并且除非访问数据库,否则PHP页面是不可用的,这样安全吗?

一个PHP页面涉及用户注释,但所有HTML和PHP代码都从表单中删除。我测试了它涉及一些开发技术,但似乎都没有成功。

但为了我的目的,使用eval是否安全?有更好的解决方法吗?

代码:

<?php   

if (isset($_GET['p']))
{
    $stmt = $dbh->prepare('SELECT * FROM pages WHERE shortname = :p');
    if (!$stmt->execute(array(':p' => $_GET['p'])))
    {//
        exit('Could not exec query with param: '.$_GET['p']);
    }


    while($row = $stmt->fetch(PDO::FETCH_ASSOC))
    {

        eval(" ?>".$row["content"]."<?php ");
        echo '</div>';
    }
}
//ends connection
$row->dbh = null;
    ?>

1 个答案:

答案 0 :(得分:0)

有时编写安全代码不仅仅是确保它是安全的。也许我们都会看看你的代码并认为它​​是安全的,但要监督一些小而明显的东西会造成很大的安全漏洞。

比抱歉更安全。你说[php codes are disallowed and wont function if posted in these pages]那你为什么要使用eval?

返回您的代码。您发布的部件对我来说是安全的(对于评估部分)。但是如果你的应用程序中的其他地方有一些小的SQL注入漏洞让攻击者改变行怎么办?攻击者可以将PHP代码放入您的数据库中,然后使用您的eval语句执行它。

我会说:不,这段代码不安全。

此外,不要在错误中回显用户给定的内容,这可能会导致xss漏洞。