繁体   English   中英

以角度存储 JWT 令牌的位置?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM