微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel Eloquent:SQL注入预防是自动完成的吗?

如何解决Laravel Eloquent:SQL注入预防是自动完成的吗?

对,但是…

是的,当您依赖内置的ORM功能时,它可以防止SQL注入$someModelInstance->save()。从文档

Laravel的数据库查询构建器为创建和运行数据库查询提供了方便,流畅的界面。它可用于在您的应用程序中执行大多数数据库操作,并可在所有受支持数据库系统上工作。

Laravel查询构建器使用PDO参数绑定来保护您的应用程序免受sql注入攻击。无需清除作为绑定传递的字符串。

请注意,如果您构建原始sql语句并执行这些语句或使用原始表达式,则 不会 自动受到保护。来自文档的更多信息

原始语句将作为字符串注入查询中,因此您应格外小心,不要创建sql注入漏洞。

在构建原始sql语句或表达式时,应始终使用参数化查询。有关如何在Laravel / Eloquent中执行此操作的信息,请参见上面的最后一个链接(以及该文档的其他部分)。

解决方法

给定示例代码( Message 是一个Eloquent模型。):

public function submit(Request $request){
    $this->validate($request,[
        'name' => "required","email" => "required"
    ]);

    //database connection
    $message = new Message;
    $message->name = $request->input("name");
    $message->email = $request->input("email");

    $message->save();
}

Eloquent是否使用参数化查询(如PDO)或任何其他机制来防止SQL注入?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。