【发布时间】:2012-08-27 15:14:05
【问题描述】:
我正在使用 Backbone.js,它与无状态的 rest API 进行通信。某些调用需要通过 HTTP 基础进行身份验证。
我不明白的是,我必须以某种方式验证每个请求,我怎么能安全地做到这一点?我的第一个想法是有一个 cookie,存储用户名和密码,但这会容易受到攻击吗?
这可以安全地完成吗?
【问题讨论】:
标签: http authentication backbone.js basic-authentication
我正在使用 Backbone.js,它与无状态的 rest API 进行通信。某些调用需要通过 HTTP 基础进行身份验证。
我不明白的是,我必须以某种方式验证每个请求,我怎么能安全地做到这一点?我的第一个想法是有一个 cookie,存储用户名和密码,但这会容易受到攻击吗?
这可以安全地完成吗?
【问题讨论】:
标签: http authentication backbone.js basic-authentication
这个问题有两个主题。一个是关于安全性的,一个似乎是关于 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 标头。
【讨论】: