我在如何保护refresh_token
免受黑客攻击方面进行了很多研究,因为它会存储在浏览器的local-storage
/ cookie
中,因此黑客可以轻松地窃取这些令牌,而我无法找到正确的答案,所以我来到了这里。
我知道access_token
将在较短的时间内到期,我们应该使用refresh_token
来获得新的access_token
。但是,如果黑客窃取了refresh_token
手段,那么他可以长期作为登录用户,对吗?
有人说,您可以使用client_id
和client_secret
保护它,但是黑客将访问具有client_id
和{{1 }}。再次,黑客可以轻松获得新的access_token。
因此,我找不到保护黑客免受新client_secret
侵害的方法。
有人可以在这里指导我,如何保护黑客免于访问来自浏览器access_token
/ local-storage
的刷新令牌?
答案 0 :(得分:1)
根据您的解释,您正在谈论的是基于浏览器的应用程序。如果此应用程序没有后端,则您没有安全的位置来存储您的长期令牌或客户机密。
从OAuth 2.0的角度来看,它们称为public clients。因此,协议不允许他们拥有客户机密。因此,它们具有客户端ID和用于客户端身份验证(客户端标识)的重定向URL。隐式流程是适用于在浏览器上运行的SPA的一种关键流程。根据规范,它们将不会获得刷新令牌。原因是他们无法保护这些秘密。
但是,如果您具有后端并且能够关联浏览器会话和后端存储,则可以使用提供刷新令牌并安全地存储它的流程。但这需要您的应用程序体系结构支持此类(例如:浏览器会话和后端存储)。
此外,您可以使用身份服务器的登录状态来跳过登录,而不是使最终用户每次都登录。这也将依赖于身份服务器的浏览器cookie及其生存时间。例如,身份服务器可能具有有效期为24小时的浏览器会话。因此,您的客户端在此时间内访问w应用程序时将看不到登录页面。
答案 1 :(得分:0)
您可以尝试使用此库Secure-ls
保护本地存储的安全