【问题标题】:Doctrine and SQL Injection教义和 SQL 注入
【发布时间】:2010-12-22 10:57:04
【问题描述】:

Doctrine 会自动阻止 SQL 注入吗?
下面的代码安全吗?

$user = new Model_User();
$user->name = $_POST['username'];
$user->save();

【问题讨论】:

    标签: php doctrine doctrine-1.2


    【解决方案1】:

    就SQL注入而言,我认为不会有问题。但是您可能还想确保用户名格式正确(例如可以是<script>//do somthing bad</script>,并且例如当您在站点上的某处输出该用户名时会执行该脚本)

    【讨论】:

      【解决方案2】:

      只要您使用 bound parameters(Doctrine 将在后台使用这些,因此您的示例很好),您就可以避免使用 Doctrine(以及任何其他基于 PDO 的数据库库)进行 SQL 注入,但您应该永远不要使用来自客户的输入而不先对其进行清理。看看 PHP 的过滤器库——特别是清理示例。在您的情况下,您至少需要使用 FILTER_SANITIZE_STRING “剥离标签,可选择剥离或编码特殊字符。”来验证名称是否为字符串。

      【讨论】:

        猜你喜欢
        • 2015-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-06
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 2014-05-01
        相关资源
        最近更新 更多