【问题标题】:SQL Injection Prevention with Omniauth使用 Omniauth 预防 SQL 注入
【发布时间】:2012-06-27 23:44:09
【问题描述】:

使用 Rails 的omniauth 插件查找用户时,当我在以下代码行上运行brakeman 时收到SQL 注入警告:

omniauth = request.env["omniauth.auth"]
user = User.where(omniauth.slice(:provider, :uid)).first

SQL注入警告是:

第 15 行附近可能存在 SQL 注入:User.where(request.env["omniauth.auth"].slice(:provider, :uid)) /app/controllers/authentications_controller.rb

如何避免这行代码易受攻击?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 security omniauth


    【解决方案1】:

    你可以试试这样的

    User.find_by_provider_and_uid(omniauth[:provider], omniauth[:uid])
    

    【讨论】:

    • 你介意我问一下切片的sqli风险是什么吗?检索uid是否容易?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2017-12-17
    • 2012-12-21
    • 2013-05-21
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多