我对基于令牌的身份验证的理解是,在身份验证(可能是通过ssl)时,会将令牌传递给用户,以便在运行中进行廉价的用户验证。其中一个实现是生成一个cookie,传递给用户进行会话管理。
但是,我的理解是基于令牌的身份验证(至少通过cookie)容易受到火灾等中间攻击的影响。
是否有其他实施方法可以解决这一重大安全问题,或者我对tba存在根本性的误解?
答案 0 :(得分:10)
你的理解很好。从根本上说,就应用程序如何看待它而言,令牌也可以是用户名和密码。如果有人拥有令牌,他们可以向您的应用程序验证自己。如果有人通过跨站点脚本漏洞(XSS)或其他方式获取cookie,则http cookie的主要目的是避免泄露用户名和密码。是的,在适当的情况下,他们可以将此令牌“重播”给应用程序作为“中间人”,但他们不应该能够找出与其配对的用户名/密码,但如果令牌再次无法保证生成算法很弱,比如说,如果您决定将BASE64编码的用户名和密码连接在一起并将其用作值。
通常你保留令牌 - >用户映射服务器端的安全性。因此,最终您的安全性都基于保持令牌安全并确保其生命周期受到控制(例如,它过期和/或仅在从与证书的原始提供者使用的IP相同的IP提供给您时才有效 - 再次,只是一个例子)
希望这有帮助,
-Oisin