繁体   English   中英

Brakeman提出的Rails中的安全性问题

[英]Security Issues in Rails raised by Brakeman

在我的项目中,使用Brakeman gem时 ,引发了以下安全问题:

1)在以下语句中,引发了Unescaped model attribute错误

CashTransaction.find(session[:transaction_id]).customer.address_1

我知道Rails使用基于Cookie的会话存储。 但是,Rails 4使用cookie相对安全,因为您需要使用Rails secret token来破坏它。

那么,这是假阳性吗? 如果没有,我如何删除此漏洞?

2)其次,我有一种情况需要检查是否存在具有典型属性的记录。 为此,我有以下代码

  def check_email
    render json: ( is_available('email', params[:user][:email]) )
  end

  def is_email_available
    is_email_taken = is_available('email', params[:user][:email])
    render json: !is_email_taken
  end

  def is_username_available
    is_username_taken = is_available('username', params[:user][:username])
    render json: !is_username_taken
  end

  def is_available(type, value)
    User.where("#{type}=?", value).exists?
  end

Brakeman提出以下警告

Possible SQL injection. User.where("#{(local type)}=?", (local value))

如何删除此漏洞,同时使代码变干?

对于第二部分:

如果type不是用户输入,则可以执行

User.where(type.to_sym => value)

如果是用户输入,则应该这样做。

User.where("%s =  %s" % [type, "'#{value}'"])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM