主干HTTP基本rest api身份验证

主干HTTP基本rest api身份验证,http,authentication,backbone.js,basic-authentication,Http,Authentication,Backbone.js,Basic Authentication,我使用的是Backbone.js,它与无状态RESTAPI通信。有些调用需要通过HTTP basic进行身份验证 我不明白的是,不知何故,我必须对每个请求进行身份验证,我如何才能安全地做到这一点?我的第一个想法是有一个cookie,存储用户名和密码,但这将是脆弱的 这能安全地完成吗?这个问题有两个主题。一个是关于安全,另一个似乎是关于休息规则 安全地进行身份验证的方法是通过SSL连接传递数据。这是通过网络安全传输数据的唯一方法 关于在每个请求上使用基本身份验证(REST)发送身份验证,我认识的人

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

我不明白的是,不知何故,我必须对每个请求进行身份验证,我如何才能安全地做到这一点?我的第一个想法是有一个cookie,存储用户名和密码,但这将是脆弱的


这能安全地完成吗?

这个问题有两个主题。一个是关于安全,另一个似乎是关于休息规则

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

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

关于多大的安全性才是足够的安全性,总是有一个长时间的大讨论,这实际上取决于您的应用程序以及目的是什么。我知道这不是你可能想要的最终答案,但我会告诉你我的看法以及我将如何处理你提到的问题

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

你会觉得有用吗

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

它是如何工作的? 受HTTP基本身份验证保护的资源要求在每个请求上设置以下HTTP标头:

授权:基本 访问令牌由用户名和密码组成,并使用:分隔符连接在一起,然后编码为Base64


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

我已经知道REST和SSL,我唯一需要知道的是关于cookie,如何存储它,因为您正在cookie中存储密码?我不在cookie中存储用户的密码。即使cookie是加密的,也可能不是个好主意。这是一种敏感数据。事实上,我甚至不知道用户的密码是什么,因为我只在数据库中存储单向加密+salt生成的散列。我要做的是存储一个唯一的sessionID和userID,用于标识它是谁的会话。因为cookie是加密的,所以他们在尝试猜测会话ID时很可能会修改它或生成假cookie。如果他们想尝试,他们必须在cookie过期之前的时间窗口中进行。您能否发布一个随CSRF令牌发送的主干同步修改的示例?这可能会对您有所帮助。