如何保护刷新令牌免受黑客攻击

时间:2018-12-23 05:03:48

标签: security spring-security oauth-2.0 refresh-token

我在如何保护refresh_token免受黑客攻击方面进行了很多研究,因为它会存储在浏览器的local-storage / cookie中,因此黑客可以轻松地窃取这些令牌,而我无法找到正确的答案,所以我来到了这里。

我知道access_token将在较短的时间内到期,我们应该使用refresh_token来获得新的access_token。但是,如果黑客窃取了refresh_token手段,那么他可以长期作为登录用户,对吗?

有人说,您可以使用client_idclient_secret保护它,但是黑客将访问具有client_id和{{1 }}。再次,黑客可以轻松获得新的access_token。

因此,我找不到保护黑客免受新client_secret侵害的方法。

有人可以在这里指导我,如何保护黑客免于访问来自浏览器access_token / local-storage的刷新令牌?

2 个答案:

答案 0 :(得分:1)

根据您的解释,您正在谈论的是基于浏览器的应用程序。如果此应用程序没有后端,则您没有安全的位置来存储您的长期令牌或客户机密。

从OAuth 2.0的角度来看,它们称为public clients。因此,协议不允许他们拥有客户机密。因此,它们具有客户端ID和用于客户端身份验证(客户端标识)的重定向URL。隐式流程是适用于在浏览器上运行的SPA的一种关键流程。根据规范,它们将不会获得刷新令牌。原因是他们无法保护这些秘密。

但是,如果您具有后端并且能够关联浏览器会话和后端存储,则可以使用提供刷新令牌并安全地存储它的流程。但这需要您的应用程序体系结构支持此类(例如:浏览器会话和后端存储)。

此外,您可以使用身份服务器的登录状态来跳过登录,而不是使最终用户每次都登录。这也将依赖于身份服务器的浏览器cookie及其生存时间。例如,身份服务器可能具有有效期为24小时的浏览器会话。因此,您的客户端在此时间内访问w应用程序时将看不到登录页面。

答案 1 :(得分:0)

您可以尝试使用此库Secure-ls

保护本地存储的安全