在我的项目中,在使用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))
我怎样才能消除这个漏洞,同时让我的代码干燥?