SQL 在 Where 子句中的 Rails 注入
SQL injection in Rails in Where Clause
我有以下行被静态代码分析器怀疑 SQL 注入:
Admin.joins(:accounts_admins).where(user_id: params[:user_u
ser_id], "members.account_id" => @account.id).first
对我来说,它看起来很安全,因为它使用参数化查询。如果有人不这么认为,请告诉我。
你是对的; Rails 会将 WHERE 子句转换为使用绑定参数,从而避免 SQL 注入的风险。
也就是说,作为最佳实践,您应该利用 strong_parameters 或其他某种形式的参数验证。在编写代码时,零值将导致 Rails 插入 WHERE user_id IS NULL
表达式。这在这里可能不是问题,但在某些情况下可能会导致未经授权的访问。
我有以下行被静态代码分析器怀疑 SQL 注入:
Admin.joins(:accounts_admins).where(user_id: params[:user_u
ser_id], "members.account_id" => @account.id).first
对我来说,它看起来很安全,因为它使用参数化查询。如果有人不这么认为,请告诉我。
你是对的; Rails 会将 WHERE 子句转换为使用绑定参数,从而避免 SQL 注入的风险。
也就是说,作为最佳实践,您应该利用 strong_parameters 或其他某种形式的参数验证。在编写代码时,零值将导致 Rails 插入 WHERE user_id IS NULL
表达式。这在这里可能不是问题,但在某些情况下可能会导致未经授权的访问。