[英]Where to store JWT token in angular?
我正在用 Django 和 angular 构建一个应用程序。 目前,我正在将后端发布的 JWT 存储在本地存储上。 但是,我担心 XSS 攻击。 我应该使用仅 HTTP cookie 存储令牌吗? 我也在考虑将令牌存储在我的身份验证服务类中的变量字段中。 但我不完全确定 angular 是否在整个应用程序中共享服务。 我的身份验证服务会有一个实例吗?
假设您使用标准依赖注入,每次都会实例化您的服务的一个新实例,因此不会存储服务类中的字段。
会话或本地存储虽然很好。 JWT 机制可防止客户端轻易更改内容(因为您必须在下游后端服务上对其进行验证)。
可以想象,您可以在 JWT 负载中保留一些原始请求签名,并检查此匹配项下的任何辅助请求。 例如,IP 地址、用户代理字符串等。
就个人而言(如果它被正确实现),我认为这对于大多数面向 Web 的应用程序来说已经足够安全了。 显然,银行/金融应用程序可能希望加倍努力,使用 2 因素身份验证等。
让事情直截了当:
如果您遇到了 XSS - 游戏就结束了。 时期。
那说,
在我当前的工作场所通过外部Penetration Tests
一种方法是将JWT
令牌放在httpOnly secure samesite=strict
cookie 中。
为了进一步防止 CSRF,您可以在 Web 存储中添加一个标识符,将其作为标题附加到每个xhr
。
在服务器中,从jwt
提取标识符并将其与标头值进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.