【发布时间】:2022-01-07 06:35:59
【问题描述】:
例如,我有我的代码。
$news = new News();
$news->title = 'hello world';
$new->user = $user_id,
$news->urlcc = DB::raw('crc32("'.$args['newsShortUrlInput'].'")');
$news->save();
$news->refresh();
这里带有属性 $news->urlcc 来自使用mysql函数 crc32() 后的用户输入; 对于SQL注入问题,以上代码不安全。
所以,我的问题是如何将 DB::raw() 中的参数与 Laravel 模型绑定,如下所示。
$news->urlcc = DB::raw('crc32(:newsShortUrlInput)', ['newsShortUrlInput' => $args['newsShortUrlInput]);
谢谢,
【问题讨论】:
-
不,那是模型选择,我正在尝试使用 Laravel 模型创建记录。
-
这回答了你的问题:stackoverflow.com/a/20873009/7698734
-
据我所知,那是不可能的。绑定不能在 DB::raw 中传递,并且您通常无权访问为保存模型而创建的构建器对象以以这种方式添加绑定。对于这种特殊情况,您可以改用 PHP crc32。
-
所有向我展示如何在 select 语句中绑定参数的建议都不符合我的条件。我的案例是尝试创建新的 Laravel 模型。我找到了一种解决方案,见下文。谢谢
标签: laravel model code-injection raw