【问题标题】:For basic auth, can you use a key passed as params via url?对于基本身份验证,您可以使用通过 url 作为参数传递的密钥吗?
【发布时间】:2017-06-28 17:55:35
【问题描述】:

不谈论任何超级敏感或私密的事情。我有一种情况,我只想限制访问,并打算使用 Rails 的authenticate_or_request_with_http_basic 方法在页面上要求密码。然后我意识到,我也可以通过在 URL 上添加一个额外的参数并将其与我定义的任何内容进行比较来做到这一点。所以像:

www.mypage.com?secret=password

def page
    if params[:secret] == ENV["secret"]
        ...
    end
end

从安全的角度来看,为什么这不像 Rails 的方法那样安全? Rails 的方法提供了哪些额外的安全性?

【问题讨论】:

    标签: ruby-on-rails security authentication


    【解决方案1】:

    安全级别几乎与基本身份验证相同,只是您只需要一个而不是两个字段。

    基本身份验证不会为在标头中传递的用户名和密码提供机密性,除非您使用的是 HTTPS,无论如何您都应该这样做,并且这也将通过 HTTPS 进行加密。

    我唯一要说的是,该 URL 可能最终会出现在浏览器历史记录中,并将显示在地址栏中。所以我猜这种方式不太安全,因为如果有人可以访问您的浏览器历史记录,他们就可以获得密钥。

    我猜你只需要决定你关心它的安全程度。

    我要补充一点,Devise 是管理身份验证的一个很棒的 Gem(一种标准,请转到解决方案),并且有许多很棒的插件可以在用户级别的基础上管理权限。虽然,我觉得这可能对你想要的有点过头了。

    【讨论】:

      猜你喜欢
      • 2017-07-02
      • 2013-02-15
      • 1970-01-01
      • 2019-01-29
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 2021-08-07
      相关资源
      最近更新 更多