如何在 Angular 4 中处理安全会话

Posted

技术标签:

【中文标题】如何在 Angular 4 中处理安全会话【英文标题】:How to handle secure session in angular 4 【发布时间】:2018-08-15 15:07:16 【问题描述】:

我是 angular 4 的新手。我的问题是如何处理 angular4 中的安全性。我正在使用 REST Web 服务和 JWT 令牌获取用户信息。

我的登录流程是:

用户登录 -> 返回 JWT 令牌 -> 存储在本地存储/会话中 存储。

向每个请求发送此 JWT 令牌。

现在,如果我在其他浏览器中复制此令牌,它将显示其他用户的信息。

所以我想如果用户将粘贴令牌复制到其他浏览器/私人窗口然后用户注销。

有什么想法???

【问题讨论】:

不要在这上面浪费时间。在周浏览器/选项卡中复制令牌/会话/cookies 始终是可能的。 @Robin Dijkhof 那么我如何处理会话?? 我现在不明白你的问题。你想用会话做什么? 【参考方案1】:

服务器无法检测用户是否将 JWT 复制到另一个浏览器。例如。您可以将用户代理存储在 JWT 中,并检查来自 HTTP 请求的用户代理字符串是否与 JWT 相同,但这很容易被攻击者规避。

您可以将 JWT 绑定到特定 IP。

【讨论】:

【参考方案2】:

总有一种方法可以“窃取”其他用户的 cookie 和令牌,然后将它们粘贴到您的浏览器中,从而窃取用户的会话。 看看XSS。

没有 100% 的防御。

当然,您可以存储一些附加信息,例如MAC 地址或其他信息,并将它们与您的JWT 令牌映射,但基本上,这将毫无意义。

【讨论】:

以上是关于如何在 Angular 4 中处理安全会话的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular2/4/5 中,如何基于基于令牌的身份验证安全地调用 WebAPI 操作

如何以角度处理会话到期?

如何使用 javaScript 或 Angular 安全地存储 J.W.T 令牌?

如何在 Angular JS 应用程序中处理身份验证

如何在Angular 4中提供用户名和密码以使用具有oAuth安全性的rest控制器?

如何在 Apache HttpClient 4.1 中处理会话