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