保护Javascript / AngularJS中的刷新令牌

时间:2016-09-15 16:46:42

标签: javascript security authentication

我需要在Angular(Javascript)应用程序的内存中存储刷新令牌。

令牌将在身份验证时通过Ajax调用传递,然后需要存储在内存中,直到用户注销或关闭浏览器。

我现在想知道如何将此令牌安全地保存在内存中,因此无法通过控制台访问或可访问该网页的恶意浏览器插件来解析该令牌。

我发现了一些关于如何在角度中使用刷新令牌的其他线程,但我认为实现并不安全:

AngularJS - http interceptor - resend all request after token refresh

如果我用私有对象替换authService来存储刷新和访问令牌会不安全?

1 个答案:

答案 0 :(得分:2)

我认为您可能希望保护存储在内存中的敏感数据有几种不同的威胁(例如Javascript中的刷新令牌)。

我想到的是您的数据被写入磁盘。考虑像运行浏览器的PC内存不足并开始交换,或者用户决定休眠。虽然在某些低级语言中,您可以阻止操作系统将某些内存页写入磁盘,即使在交换时,您在Javascript中的控制力也远远不够,并且也无法阻止休眠(显然,使用任何语言)。

所以有一点需要注意的是,您的敏感信息可能会以明文形式写入磁盘(除非有某种磁盘加密),而且我认为您无法在Javascript中做很多事情。如果这是不可接受的,你可能不应该使用Javascript。

另一种类型的攻击可能是攻击者利用浏览器或操作系统漏洞访问您的部分内存。你也不能对这些做很多事情,你只需要相信操作系统和浏览器。

最后,还有应用程序级攻击,主要是XSS。我认为你实际上可以在某种程度上保护这些东西,主要是通过以不将其暴露给其他脚本的方式存储数据,例如在闭包中。 This article总结得比我好。