黑客有没有办法滥用我的刷新令牌?

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 令牌,导致数十个组织数据泄露

如何防止刷新被盗的访问令牌

如何在前端和后端存储 JWT 刷新令牌?

印度黑客滥用移动设备管理服务MDM监视iPhone用户

被“养”11年!黑客滥用Firefox“高龄”漏洞强制用户输入信息

如果黑客设法获取我的会话令牌。那么这是否意味着我的帐户可能会遭到入侵?