给出示例代码(Message是一个雄辩的模型。):
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 注入?
对,但是...
是的,它确实SQL注入 https://www.owasp.org/index.php/SQL_Injection当您依赖内置 ORM 功能时进行预防,例如$someModelInstance->save()
. From the docs https://laravel.com/docs/5.6/queries#introduction:
Laravel 的数据库查询构建器提供了一个方便、流畅的界面来创建和运行数据库查询。它可用于执行应用程序中的大多数数据库操作,并且适用于所有支持的数据库系统。
Laravel 查询生成器使用 PDO 参数绑定来保护您的应用程序免受 SQL 注入攻击。无需清理作为绑定传递的字符串。
请注意,您是not如果您构建原始 SQL 语句并执行这些语句或使用原始表达式,则会自动受到保护。更多来自文档 https://laravel.com/docs/5.6/queries:
原始语句将作为字符串注入到查询中,因此您应该非常小心,不要创建 SQL 注入漏洞。
在构建原始 SQL 语句或表达式时,应始终使用参数化查询。有关如何在 Laravel/Eloquent 中执行此操作的信息,请参阅上面的最后一个链接(以及文档的其他部分)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)