【问题标题】:Rails gem devise_token_auth headers in web console are enoguh to access api, why?Web 控制台中的 Rails gem devise_token_auth 标头足以访问 api,为什么?
【发布时间】:2018-10-09 14:45:45
【问题描述】:

我正在学习如何在我的 rails 5 API 中实现安全性。我正在开发一个角度应用程序来使用 API,为此我正在实现 devise_token_auth gem,但是在邮递员的测试中,我可以使用电子邮件和密码进行注册,然后收到带有令牌(过期)的响应,数据, 内容类型, 客户端, uid,然后我从 Angular 进行测试,并从我的浏览器和 Web 控制台注册,我可以看到从另一个应用程序访问 api 所需的所有信息。

设计方法authenticate_user需要参数:content-type、access-token、client、expiry、uid,但是每个人都可以访问这些信息,如果他们查看Web控制台中的响应,那么...我选择此信息并粘贴到 Postman 请求中,然后我可以访问受保护的端点,那么这个 gem 有什么用处呢?我错过了什么吗?

我在这里从 Angular 登录,并在 Web 控制台中检查响应:

然后将信息粘贴到邮递员的新请求中以访问受保护的端点:

并且访问成功,如何防止header信息显示在web控制台上?

【问题讨论】:

    标签: ruby-on-rails angular rubygems rails-api devise-token-auth


    【解决方案1】:

    但是,如果每个人都可以查看 Web 控制台中的响应,则可以访问此信息

    我错过了什么吗?

    是的。 “每个人”只能看到他们自己的令牌(不包括嗅探 http 之类的东西。您将使用 TLS,对吗?)。有了他们的令牌,用户可以做他们想做的事,而你几乎无能为力。

    但他们无法通过这种方式查看其他用户的令牌。

    【讨论】:

    • 谢谢先生澄清我的疑惑
    • 令牌也经常为每个请求重新生成(DTA 默认),它们仅在有限的时间(60 秒)内有效。这有助于防止攻击者重复使用被盗令牌
    【解决方案2】:

    这就是互联网的运作方式。 您正在登录并向服务器发送信息。 然后,服务器会使用您下次可以使用的秘密令牌进行响应,而不是用户名和密码。 使用该秘密令牌,您可以执行后续请求,而不是使用您的用户名和密码。

    关于您对“每个人”看到它的担忧。这就是您需要 SSL 加密的原因,这可以确保其他人无法读取您发送的用户名和密码,以及您收到的令牌。如果没有 SSL,您网络上的任何人或到服务器的路由确实可以读取它。

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 2017-12-03
      • 1970-01-01
      • 2018-05-24
      • 2015-02-20
      • 1970-01-01
      相关资源
      最近更新 更多