我有一个使用隐式流程来授权用户的 React 应用程序。
流程如下: 1. 如果 sessionStorage 中没有保存访问令牌或用户信息 - 用户将被重定向到登录页面。2. 用户登录并被重定向到 React App 的主页。2.1。当重定向回主页时,重定向 URL 已经有 access_token 和 id_token 作为 url 参数的一部分。3. React App 保存访问令牌并解码 id_token 以获取有关用户的信息。
现在的问题是,如果有人在 2.1 中窃取了重定向 URL。他们可以将其粘贴到浏览器中并基本上重播此登录。
解决方案之一是实施 nonce。
https://auth0.com/docs/api-auth/tutorials/nonce
根据上面的文章,nonce 应该存储在 localStorage 中,一旦我得到带有 nonce 的 id_token - 我应该使用来自 localStorage 的原始 nonce 验证它。但是攻击者可以做以下事情: 1. 拿走这个 id_token。2. 使用任何在线工具对其进行解码。3. 检查里面有什么样的随机数。4. 使用 Chrome 开发工具修改 hist localStorage 所需的 nonce。
有人知道防止此类攻击的更好想法吗?