【问题标题】:Do I even need a bearer token, if i have a csrf token?如果我有 csrf 令牌,我什至需要不记名令牌吗?
【发布时间】:2023-03-08 04:41:01
【问题描述】:

我正在开发 Laravel API,我想使用不记名令牌与 VueJS 前端进行安全通信。然后我的一个朋友告诉我,这是不必要的,因为 Laravel 已经使用 CSRF 令牌来屏蔽 XSS 攻击。

那么,如果我已经使用 csrf 令牌,我的基于令牌的身份验证是否基本上没用?为什么?

【问题讨论】:

  • 访问令牌与 csrf 令牌不同。访问令牌授予您使用某些东西的授权,而 CSRF 是一种保护机制,用于保护与会话密切相关的状态更改表单。

标签: php laravel token csrf


【解决方案1】:

您在这里谈论的是两件不同的事情。 Bearer 令牌用于对 API 进行身份验证,例如,CSRF 令牌用于防止跨端请求伪造攻击。

不记名令牌是您登录到外部 api 服务(如护照或会员卡)的令牌,因此您被授予访问此外部服务的权限。令牌还告诉服务器访问资源的人/机器是谁,因此服务器可以决定他们是否具有正确的权限。

CSRF 令牌可保护您免受请求伪造,这意味着有人从外部服务器或工具向您的服务器发出请求。 CSRF 令牌唯一告诉您的是请求来自使用您网站的人,它不会告诉您该人是谁或他们拥有什么权限。

希望你能理解。也许你应该研究一下 CSRF 维基百科条目https://en.wikipedia.org/wiki/Cross-site_request_forgery

还有一些关于不记名令牌的信息:https://en.wikipedia.org/wiki/OAuth

【讨论】:

  • 我认为他知道这一点,但想知道他是否可以将同一个令牌用于这两个目的。他真的不应该这样做,这不是好的做法。
【解决方案2】:

您绝对应该添加某种基于无状态令牌的身份验证,考虑到 csrf 令牌仅用于屏蔽 XSS 攻击这一事实,而不是用于基于角色和权限对用户进行身份验证和授权。

【讨论】:

  • CSRF 令牌用于屏蔽 CSRF 攻击。不是 XSS 攻击。
猜你喜欢
  • 2012-02-23
  • 2017-10-27
  • 2021-09-27
  • 2019-12-30
  • 2020-07-13
  • 2020-12-26
  • 2018-08-27
  • 2011-07-15
  • 2016-05-03
相关资源
最近更新 更多