8

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

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

这可以安全地完成吗?

4

2 回答 2

9

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

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

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

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

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

于 2012-08-27T23:44:37.447 回答
4

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

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

它是如何工作的?

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

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

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

于 2013-03-25T17:28:50.023 回答