黑客有没有办法滥用我的刷新令牌?
Posted
技术标签:
【中文标题】黑客有没有办法滥用我的刷新令牌?【英文标题】:Is there a way for a hacker to abuse my refresh token? 【发布时间】:2021-06-15 09:49:19 【问题描述】:大家好,我最近正在构建一个网络应用程序,它基本上是一个购物网站。安全是我最关心的问题之一。我将使用 JWT(访问令牌和刷新令牌)。
我将这样实现它:服务器将访问令牌和刷新令牌返回给已登录的用户。对于前端,我使用的是 React,所以我要将访问令牌(短期)保存在内存中(如 React 上下文)。我正在考虑将刷新令牌(长期存在)存储在 cookie 中,所以我想知道黑客是否有办法提取 cookie,然后在 Postman 等某些客户端上使用它并发送请求以获取访问令牌并写入一些 javascript 来获取访问令牌?
【问题讨论】:
【参考方案1】:你的问题听起来一点也不愚蠢!这是一个很好的问题。黑客有办法提取 cookie 是的。 Cookie 窃取是一个已知的安全问题。
但是,阻止此问题的方法是启用 CORS 以阻止任何跨源 API 操作。通过这样做,您可以创建一个启用您的网络应用 URL 的白名单。
我建议在您的开发服务器上禁用此功能以启用 localhost 以加快开发速度,然后在生产环境中启用它。
这里是一些关于 CORS 的起始文档:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
编码愉快!
【讨论】:
【参考方案2】:也许考虑将这两个标记都保存在内存中?如果您希望用户在返回到您的应用程序时仍处于登录状态,您可以依靠 SSO 会话无缝登录,而不是在后台使用刷新令牌。
看看这些SPA security best practices。此外,我建议不要使用 JWT 作为访问和刷新令牌,这样没有人可以读取保存在 JWT 中的数据。您可以在 API 中使用 Token Introspection 或实现 Phantom Token Approach。
还可以查看this document by W3C,它提供了一些关于可用于您的应用程序的安全设置的指南。
【讨论】:
以上是关于黑客有没有办法滥用我的刷新令牌?的主要内容,如果未能解决你的问题,请参考以下文章
GitHub:黑客盗用 OAuth 令牌,导致数十个组织数据泄露