【问题标题】:What is the difference between "like" and "="? [duplicate]“喜欢”和“=”有什么区别? [复制]
【发布时间】:2020-09-02 10:21:14
【问题描述】:

“喜欢”和“=”有什么区别? 例如:

  def sequence
    slug = title.to_param
    sequence = Movie.where("slug = '#{slug}-%'").count + 2
    "#{slug}-#{sequence}"
  end

  def sequence
    slug = title.to_param
    sequence = Movie.where("slug  like #{slug}-%").count + 2
    "#{slug}-#{sequence}"
  end

【问题讨论】:

  • Take a look,这不是一个与 Rails 严格相关的问题。
  • @SebastianPalma 几位开发人员说我在这里使用“喜欢”我可以进行 SQL 注入。对吗?
  • 任何像这样将用户输入直接插入 SQL 字符串的查询都容易受到 SQL 注入攻击。但这确实是一个单独的问题。

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

"=" 将返回完全匹配 “LIKE”将返回部分匹配

两种情况都可能发生sql注入 您需要对输入进行完整性检查,使用参数化查询,例如: User.where("id = ?", params[:user][:user_id]).first

检查 https://guides.rubyonrails.org/security.html#sql-injection

对于“LIKE”运算符,特别是可能会发生 DOS 攻击 检查http://rorsecurity.info/portfolio/rails-sql-injection-like

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2011-06-25
    • 2016-01-14
    • 2021-08-06
    • 1970-01-01
    • 2015-11-23
    • 2013-02-13
    • 2011-04-26
    • 2016-09-24
    相关资源
    最近更新 更多