Laravel查询生成器:此命令是否从SQL注入中被免除?

问题描述 投票:0回答:1

[前一段时间,我在Stackoverflow上阅读了一个可接受的答案,该答案声称select("sql query")是从SQL注入中免除的,而select(raw("sql query"))不是。就我而言,我有以下代码:

$request; // Illuminate\Http\Request

DB::connection('default')->select("
    SELECT *
    FROM `some_table`
    WHERE `some_col` = '$request->some_val'
");

该命令是否从SQL注入中免除?如果是,我无法理解查询生成器如何知道如何准备语句? :thinking:

sql database laravel sql-injection query-builder
1个回答
0
投票

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

您可以参考以下链接:

Laravel Eloquent: is SQL injection prevention done automatically?https://laravel.com/docs/5.6/queries#introduction


0
投票

您必须使用此代码

DB::select('SELECT * FROM `some_table` WHERE `some_col` = ?', [$request->some_val]);
© www.soinside.com 2019 - 2024. All rights reserved.