web-applications – 用户如何保持登录基于REST的网站?

大约一年前,我问了这个问题: Can you help me understand this? “Common REST Mistakes: Sessions are irrelevant”.我的问题基本上是这样的:

Okay,I get that HTTP authentication is done automatically on every message – but how? Is the username/password sent with every request? Doesn’t that just increase attack surface area? I feel like I’m missing part of the puzzle.

我收到的答案在移动(iPhone,Android,WP7)应用程序的上下文中非常有意义 – 在与REST服务交谈时,应用程序只会发送用户凭据以及每个请求.这对我很有用.

但是现在,我想更好地理解如何保护类似REST的网站,比如StackOverflow本身或像Reddit这样的东西.如果是用户通过网络浏览器登录而不是通过iPhone应用程序登录,情况会怎样?

>用户登录时会发生什么?凭据是否以某种方式保存在浏览器中?
>浏览器如何知道随后的REST请求要发送哪些凭据?
>如果是对Web服务的JavaScript调用怎么办? JavaScript调用如何包含用户凭据?

我会坦率地说:我对网站安全性的理解非常有限,我不是网络开发人员(Damnit Jim,我是桌面开发人员!).我喜欢从应用程序角度使用REST服务,但现在我想尝试构建一个基于REST原则的网站,我发现自己很丢失.

如果上述问题中有任何内容不清楚您是否希望我澄清,请发表评论,我会解决.

解决方法

真正的问题是网络浏览器很糟糕.好吧,也许我只是苦涩;-).

如果您创建的网站使用标准HTTP身份验证机制(如Basic或Digest)之一,则浏览器将弹出一个登录屏幕,然后在将来的每个请求中使用这些凭据.

但是,大多数人希望控制他们的登录页面的外观,但据我所知,如果以这种方式捕获登录信息,则无法告诉浏览器,嘿,在将来的请求中使用Authentication头中的这些凭据.

如果有办法告诉浏览器,你正在使用的那些凭据,请忘记它们也会很好.这将允许您有效地注销.

已经建议的解决方法是使用cookie作为Authorization标头的替代品.它并不理想,但只要cookie仅用于提供身份验证信息而不是服务器端会话标识符,那么一切都很好.

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在'',则表示换行,用''切割。
代码实现 option = { backgroundColor: '#080b30', tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...