Spring Security 在Spring Boot 中访问和刷新令牌,这安全吗?

x6yk4ghg  于 2023-11-19  发布在  Spring
关注(0)|答案(2)|浏览(113)

我正在用spring Boot 和react构建我的第一个web应用程序。现在我专注于安全方面。该应用程序使用jwt令牌。当用户登录时,后端在Authorization头沿着一个短期访问令牌和一个存储在仅限http的cookie中的长期刷新令牌进行响应。然后,访问令牌存储在本地存储中,并用于发出后续请求。cookie的(cookie包含刷新令牌)路径被设置为负责刷新访问令牌的端点,这样它就不会沿着前端发出的每个请求一起发送。如果访问令牌过期,则后端以401状态响应,前端向刷新端点发出请求。
考虑到它是一个展示应用程序,这种方法有效吗?或者我应该使用OAuth2和“后端用于前端”或“BFF”?

jrcvhitl

jrcvhitl1#

考虑到它是一个展示应用程序,这种方法有效吗?或者我应该使用OAuth2和“后端用于前端”或“BFF”?
我们不能说,这一切都是关于你是谁显示套管它。
如果它是在显示,你可以安全方面,我肯定不会显示它,因为它只会显示,你得到你的知识,从以下穷人的博客,你没有真实的知识,为什么你不应该建立这样的登录在生产环境中。
OAuth 2.0 Security Best Current Practice文档建议不要完全使用 * 隐式流 *,因为在HTTP重定向中返回访问令牌而不确认客户端已收到令牌的风险。
如果您显式地使用JWT令牌,则在将令牌直接分发给浏览器时需要考虑其他严重的风险。
Spring Security中没有这样的实现,这是有充分理由的。

  • 您无法注销用户,在浏览器中删除令牌并不意味着用户已注销。如果其他人拥有令牌,则仍然可以使用。
  • 代币只能过期
  • 不可能阻止用户
  • 无法注销“所有设备”
  • 代币可以通过XSS攻击被盗
  • 没有安全的方式在浏览器中存储令牌
  • 如果用户被欺骗调用HTTP而不是HTTPS,则令牌可能从请求中被窃取。
  • 在过去的几年里,JWT库中存在几个漏洞

这样的例子不胜枚举。
JWT旨在用于私有网络,以减少对发布者的请求数量。它们应该是短暂的(分钟)以执行一次性请求。它们从未打算取代会话。
Springs Implementation guidelines for Browser-Based Apps (SPA)推荐像BFF这样的私人客户。
像Google、Facebook等大公司不向浏览器公开令牌,他们在客户端使用BFF模式和cookie,主要遵循OpenID连接标准。
所以,如果你打算表明你知道安全,我会显示适当的安全。

ghhaqwfi

ghhaqwfi2#

access/refresh token完全没问题!只有当你想让你的用户通过其他身份提供商服务(如Google)进行身份验证时,你才可以使用Oauth2.0。

相关问题