【问题标题】:Laravel SelectRaw vs DB:RawLaravel SelectRaw 与 DB:Raw
【发布时间】:2016-03-28 07:23:18
【问题描述】:

第一:

 DB::table('someTable')
->selectRaw('count(*), min(some_field) as someMin, max(another_field) as someMax')
->get();

第二:

DB::table('someTable')->select(
array(
        DB::raw('min(some_field) as someMin'),
        DB::raw('max(another_field) as someMax'),
        DB::raw('COUNT(*) as `count`')
    )
)->get()

上面两个查询结果是一样的,但是我的问题是有没有 如果我这两个查询可能存在安全问题(SQL 注入) 在 where 条件下直接使用用户输入。

【问题讨论】:

  • 请举个例子

标签: database laravel laravel-5 sql-injection


【解决方案1】:

根据 Laravel 的 documentation:

注意:Laravel 查询构建器使用 PDO 参数绑定来保护 您的应用程序可以抵御 SQL 注入攻击。没有必要 干净的字符串作为绑定传递。

【讨论】:

  • 是的,这是正确的,但在 DB::raw 中,此文本是“这些表达式将作为字符串注入到查询中,因此请注意不要创建任何 SQL 注入点!”,所以您需要小心你如何使用 DB::raw,但在这种情况下你没有输入,所以没有注入向量。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2020-08-16
  • 2021-10-24
  • 2021-12-04
  • 2017-04-19
  • 2019-07-12
  • 1970-01-01
相关资源
最近更新 更多