我正在使用 Backbone.js,它与无状态的 rest API 进行通信。有些调用需要通过 HTTP basic 进行身份验证。
我不明白的是,我必须以某种方式验证每个请求,我怎么能安全地做到这一点?我的第一个想法是有一个 cookie,存储用户名和密码,但这会容易受到攻击吗?
这可以安全地完成吗?
我正在使用 Backbone.js,它与无状态的 rest API 进行通信。有些调用需要通过 HTTP basic 进行身份验证。
我不明白的是,我必须以某种方式验证每个请求,我怎么能安全地做到这一点?我的第一个想法是有一个 cookie,存储用户名和密码,但这会容易受到攻击吗?
这可以安全地完成吗?
这个问题有两个主题。一个是关于安全性的,一个似乎是关于 REST 规则的。
安全地进行身份验证的方法是通过 SSL 连接传递该数据。这是通过网络安全传输数据的唯一方法。
关于在每个请求 (REST) 上使用基本身份验证发送身份验证,我认识的人实际上并没有多少人这样做。
关于多少安全性就足够安全性总是有一个很长的讨论,这实际上取决于您的应用程序和目的是什么。我知道这不是您可能正在寻找的明确答案,但我只会告诉您我的看法以及我将如何处理您提到的问题。
对于 RESTful 应用程序,故事是应该对每个请求进行身份验证,但在实际实践中,我发现这更像是“指南”而不是硬性规则。遵循所有规则的完全 RESTful 应用程序很少见。我使用加密的 cookie 来存储用户会话数据,标准身份验证流程发生一次并在一周内到期。数据传输通过 SSL 进行以防止 MITM 攻击,修改后的 Backbone 同步发送一个 CSRF 令牌以及每个 POST、PUT、DELETE 以防止跨站点请求伪造。对于我正在开发的社交应用程序来说可能“足够好”。如果你在做银行电汇之类的,也许不会。希望这能给你一个参考点来判断你可能想要做什么。
https://github.com/fiznool/backbone.basicauth你觉得有用吗?
此插件允许通过您的主干模型和集合访问受 HTTP 基本身份验证保护的远程资源。
使用 HTTP 基本身份验证保护的资源需要在每个请求上设置以下 HTTP 标头:
授权:基本 访问令牌是通过获取用户名和密码,用 : 分隔符连接在一起并编码为 Base64 形成的。
该插件处理 Base64 编码,并在每个使用 Backbone.sync 的请求上自动设置 Authorization 标头。