【发布时间】:2018-02-18 08:54:50
【问题描述】:
我当前的架构基于 LDAP + JSON Web Token 身份验证,并且我通过 URL 以这种方式传递 Token:
https://myHostApp?jwt={myToken}
以这种方式进行是否安全,或者我应该以另一种方式传递令牌? 还假设 SSL 已启用。
【问题讨论】:
-
请阅读我的回答。接受的答案不应被认为是可靠的。
我当前的架构基于 LDAP + JSON Web Token 身份验证,并且我通过 URL 以这种方式传递 Token:
https://myHostApp?jwt={myToken}
以这种方式进行是否安全,或者我应该以另一种方式传递令牌? 还假设 SSL 已启用。
【问题讨论】:
您应该在每个请求的标头中传递令牌。
【讨论】:
我不同意接受的答案。 可以说使用 HTTPS 可以防止数据泄露。但是,如果在查询字符串中设置了令牌,则可以实现很多攻击。例如:
此外,每个网络服务器都会记录访问请求,因此,如果攻击者访问您的服务器,所有令牌都将可用。
即使RFC6750(OAuth2 Bearer Token Usage)请勿推荐使用这种传输模式。
不要在页面 URL 中传递不记名令牌:不记名令牌不应该是 传入页面 URL(例如,作为查询字符串参数)。 相反,不记名令牌应该在 HTTP 消息头中传递或 对其采取保密措施的消息体。 浏览器、Web 服务器和其他软件可能无法满足 浏览器历史记录、Web 服务器日志和其他内容中的安全 URL 数据结构。如果不记名令牌在页面 URL 中传递, 攻击者可能能够从历史数据、日志中窃取它们, 或其他不安全的位置。
请注意,RFC6750 指的是 OAuth2 框架协议,但不限于此,应考虑在 Web 上下文中的每个令牌传输。
【讨论】: