Dav*_*345 2 orm pdo sql-injection laravel eloquent
我在网上找不到它,但Eloquent ORM是否像PDO预处理语句一样处理SQL注入?
Bil*_*win 12
没有框架"照顾"SQL注入.
你负责SQL注入.
框架可以提供方便地执行此操作的方法,但您仍然必须始终如一地使用这些方法.
例如,您应该使用查询参数而不是将变量连接到SQL表达式中.
你的评论:
Eloquent有一些方法whereRaw()可以让你编写任何你想要的表达式.以下是Eloquent文档中的一个示例:
$users = User::whereRaw('age > ? and votes = 100', [25])->get();
Run Code Online (Sandbox Code Playgroud)
如果您将此?语法用于参数,并将值作为下面的数组参数传递,则是,您可以安全地依赖Eloquent来使用参数化.
但是说"Eloquent负责SQL注入"是不准确的,因为这导致一些天真的开发人员认为你可以做这样的不安全的事情:
$users = User::whereRaw("age > {$_GET['age']} and votes = 100")->get();
Run Code Online (Sandbox Code Playgroud)
他们错误地认为Eloquent可以为你神奇地修复它.这不是真的.
每个ORM都提供了将应用程序变量组合到查询中的安全方法,但也提供了开发人员可以绕过的方法.他们必须提供这些方法,因为总有一些查询无法参数化.
当我说你正确使用ORM并避免不安全的代码时,这就是我的意思.
根据您的问题,所有雄辩的查询都针对 SQL 注入进行处理,因为它们在核心中使用 PDO 驱动程序。因此您不必担心,但输入会按原样存储,因此您可能希望根据应用程序的需要(HTML 格式等)进行清理
| 归档时间: |
|
| 查看次数: |
5218 次 |
| 最近记录: |