在哪里将JWT令牌存储在angular中?

时间:2020-02-03 07:34:12

标签: angular jwt

我正在使用Django和angular构建一个应用程序。目前,我正在将后端发出的JWT存储在本地存储中。但是,我担心XSS攻击。我应该使用仅HTTP cookie来存储令牌吗?我也正在考虑将令牌存储在变量字段的auth服务类中。但是我不能完全确定angular是否在整个应用程序中共享服务。我的认证服务会不会有一个实例?

2 个答案:

答案 0 :(得分:1)

假设您正在使用标准依赖项注入,则每次都会实例化服务的新实例,因此将不存储服务类中的字段。

会话或本地存储也可以。 JWT机制可防止客户端轻易更改内容(因为您必须在下游后端服务上对其进行验证)。

可以想象,您可以在JWT有效负载中保留一些原始请求签名,并在此匹配下检查所有次要请求。例如,IP地址,用户代理字符串等。

就个人而言(前提是正确实施),对于大多数面向Web的应用程序,我认为这已经足够了。显然,银行/金融应用程序不妨加倍努力,采用2要素验证等。

答案 1 :(得分:0)

让事情变得简单:

如果您获得了XSS,那就结束了。期间。

说,

在我当前的工作场所中通过外部Penetration Tests的一种方法是将JWT令牌放在httpOnly secure samesite=strict cookie中。

要进一步防止CSRF,您可以在Web存储中添加标识符,将其作为标题附加到每个xhr上。

在服务器中,从jwt中提取标识符,并将其与标头值进行比较。