【问题标题】:Backbone HTTP basic rest api authentication骨干HTTP基本rest api认证
【发布时间】:2012-08-27 15:14:05
【问题描述】:

我正在使用 Backbone.js,它与无状态的 rest API 进行通信。某些调用需要通过 HTTP 基础进行身份验证。

我不明白的是,我必须以某种方式验证每个请求,我怎么能安全地做到这一点?我的第一个想法是有一个 cookie,存储用户名和密码,但这会容易受到攻击吗?

这可以安全地完成吗?

【问题讨论】:

    标签: http authentication backbone.js basic-authentication


    【解决方案1】:

    这个问题有两个主题。一个是关于安全性的,一个似乎是关于 REST 规则的。

    安全地进行身份验证的方法是通过 SSL 连接传递该数据。这是通过网络安全传输数据的唯一方法。

    关于在每个请求上使用基本身份验证 (REST) 发送身份验证,我认识的人实际上并没有多少人这样做。

    关于多少安全性才是足够安全性的讨论总是很长,这实际上取决于您的应用程序和目的是什么。我知道这不是您可能正在寻找的明确答案,但我只会告诉您我的看法以及我将如何处理您提到的问题。

    对于 RESTful 应用程序,故事是应该对每个请求进行身份验证,但在实际实践中,我发现这更像是一个“指南”,而不是一个硬性规则。遵循所有规则的完全 RESTful 应用程序很少见。我使用加密的 cookie 来存储用户会话数据,标准身份验证流程发生一次并在一周内到期。数据传输通过 SSL 进行以防止 MITM 攻击,修改后的 Backbone 同步发送一个 CSRF 令牌以及每个 POST、PUT、DELETE 以防止跨站点请求伪造。对于我正在开发的社交应用程序来说可能“足够好”。如果你在做银行电汇之类的,也许不会。希望这能给你一个参考点来判断你可能想要做什么。

    【讨论】:

    • 我已经知道 REST 和 SSL,我唯一需要知道的是关于 cookie,如何存储它,因为您将密码存储在 cookie 中?
    • 我不会将用户的密码存储在 cookie 中。即使 cookie 已加密,也可能不是一个好主意。敏感数据的种类。事实上,我什至不知道用户的密码是什么,因为我只将使用单向加密 + salt 生成的哈希存储在我的数据库中。我所做的是存储一个唯一的 sessionID 和 userID 来标识它是谁的会话。因为 cookie 是加密的,所以他们在尝试猜测 sessionID 时更改它或生成假 cookie 的可能性很小。如果他们想尝试,他们必须在 cookie 过期之前的时间窗口内这样做。
    • 您能否发布一个发送 CSRF 令牌的主干同步修改示例?
    • 这可能会对您有所帮助。 stackoverflow.com/questions/12333853/…
    【解决方案2】:

    https://github.com/fiznool/backbone.basicauth 对你有用吗?

    此插件允许通过您的主干模型和集合访问受 HTTP 基本身份验证保护的远程资源。

    它是如何工作的?

    使用 HTTP 基本身份验证保护的资源需要在每个请求上设置以下 HTTP 标头:

    授权:基本 访问令牌是通过获取用户名和密码,用 : 分隔符连接在一起并编码为 Base64 形成的。

    这个插件处理 Base64 编码,并在每个使用 Backbone.sync 的请求上自动设置 Authorization 标头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2012-02-13
      • 2017-11-27
      • 2016-07-27
      • 2012-01-06
      • 1970-01-01
      相关资源
      最近更新 更多