看到这样的东西:
或更具体:
我现在的问题是:
中间的人可以读取令牌并在自己的请求中使用它。我的意思是他不需要知道令牌的实际含义或任何东西,他可以使用它。我错过了什么?在安全性方面,我看不出这比拥有会话 cookie 有什么好处?
据我所知,您实际上唯一能做的就是始终使用 ssl,然后您可以删除整个令牌并为每个请求使用基本身份验证?
我看到的令牌的唯一优点是您不需要使用基本身份验证并获得更多控制权,例如实际注销和更好的登录表单等(以更高的复杂性为代价)。
我错过了什么?
看到这样的东西:
或更具体:
我现在的问题是:
中间的人可以读取令牌并在自己的请求中使用它。我的意思是他不需要知道令牌的实际含义或任何东西,他可以使用它。我错过了什么?在安全性方面,我看不出这比拥有会话 cookie 有什么好处?
据我所知,您实际上唯一能做的就是始终使用 ssl,然后您可以删除整个令牌并为每个请求使用基本身份验证?
我看到的令牌的唯一优点是您不需要使用基本身份验证并获得更多控制权,例如实际注销和更好的登录表单等(以更高的复杂性为代价)。
我错过了什么?
基于令牌的身份验证不是为了保护通信免受第三方攻击者的攻击。这是为了保护服务器免受客户端本身的侵害。
为了获得适当的安全性,无论如何您都需要 SSL。如果没有 SSL,想象一下一个活跃的攻击者,例如在同一个餐厅里坐在离你两张桌子的那个长相滑稽的大胡子怪人——你不知道,但他的背包里有一个假的 WiFi 接入点,他目前正在拦截您的互联网流量,您认为通过餐厅的“免费 WiFi”。那家伙可以随时劫持你的通讯。他可以看到您发送到网站的内容以及您从这些网站收到的内容,并且他可以随意更改这两种数据。当他对着他的奶昔轻笑并且几乎要作呕时,那是因为他正在阅读你的电子邮件。
要击败主动攻击者,您需要保护数据机密性和完整性的东西,并确保您与正确的服务器对话,而不是与Bearded-Geek-in-the-Middle对话。而那个“东西”就是SSL。
使用 SSL,您确实可以只使用HTTP Basic Authentication。这将起作用……前提是您要使用 HTTP 基本身份验证,因为该身份验证由 Web 浏览器处理,并带有自己的弹出窗口,这可能很难看。例如,它可能看起来像这样:

大多数网页设计师都对这个弹出窗口的实用性和极简主义感到震惊,这让人想起斯大林时代辉煌的建筑实验。因此,几乎没有人这样做。相反,Web 站点以纯 HTML 形式实现自己的“登录页面”,因此无法从浏览器对基本身份验证的固有支持中受益。他们必须使用cookie,即我们所说的“身份验证令牌”。
此外,用户认证不一定基于登录名和密码。有些网站会做一些更有趣的事情,包括使用OAuth 协议将身份验证委托给另一台服务器。这个网站security.stackexchange.com就是这样做的。这再次要求在客户端浏览器上存储一些数据,这些数据不是登录名和密码。
一旦您开始在客户端浏览器上存储数据,您可能会设想存储对用户本人来说应该保持不透明的数据(如果他足够好奇以查看他的 cookie),并且可以抵抗用户的修改(取决于数据及其用途)。这分别需要加密和检查完整性。这种“安全”就是将东西存储在客户端系统中,但不信任客户端系统。