gpt4 book ai didi

laravel - Eloquent ORM(laravel 5) 是否负责 SQL 注入(inject)?

转载 作者:行者123 更新时间:2023-12-02 15:13:17 29 4
gpt4 key购买 nike

我在网上找不到它,但是 Eloquent ORM 是否像 PDO 准备好的语句一样处理 SQL 注入(inject)?

最佳答案

没有框架“处理”SQL 注入(inject)。

负责 SQL 注入(inject)。

框架可以提供方便地执行此操作的方法,但您仍然必须一致地使用这些方法。

例如,您应该使用查询参数,而不是将变量连接到 SQL 表达式中。

<小时/>

回复您的评论:

Eloquent 具有像 whereRaw() 这样的方法,允许您编写所需的任何表达式。这是an example from the Eloquent docs :

$users = User::whereRaw('age > ? and votes = 100', [25])->get();

如果您使用此 ? 语法作为参数,并将值作为后面的数组参数传递,那么您可以安全地依赖 Eloquent 来使用参数化。

但是说“Eloquent 负责 SQL 注入(inject)”是不准确的,因为这会导致一些天真的开发人员认为您可以做这样不安全的事情:

$users = User::whereRaw("age > {$_GET['age']} and votes = 100")->get();

他们错误地认为 Eloquent 可以神奇地为你解决这个问题。 这不是真的。

每个 ORM 都提供了将应用程序变量组合到查询中的安全方法,但也提供了开发人员可以规避这种情况的方法。他们必须提供这些方法,因为查询中总是有一些部分无法参数化。

这就是我说由你来正确使用 ORM 并避免不安全代码的意思。

关于laravel - Eloquent ORM(laravel 5) 是否负责 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539095/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com