如果我有 csrf 令牌,我还需要一个不记名令牌吗?
Do I even need a bearer token, if i have a csrf token?
我正在开发 Laravel API,我想使用不记名令牌与 VueJS 前端进行安全通信。然后我的一个朋友告诉我,这是不必要的,因为 Laravel 已经使用 CSRF Token 来抵御 XSS 攻击。
那么,如果我已经使用了 csrf 令牌,那么我基于令牌的身份验证基本上就没用了吗?为什么?
你在这里谈论的是两件不同的事情。
Bearer token 用于对 API 进行身份验证,例如,CSRF Token 用于防止跨端请求伪造攻击。
不记名令牌是您对外部 api 服务(如护照或会员卡)的登录令牌,因此您被授予访问此外部服务的权限。令牌还告诉服务器person/machine 访问资源的人是谁,因此服务器可以决定他们是否具有正确的权限。
CSRF 令牌可保护您免受请求伪造,即有人从外部服务器或工具向您的服务器发出请求。 CSRF 令牌唯一告诉你的是请求来自使用你网站的人,它不会告诉你那个人是谁或者他们有什么权限。
希望你明白。也许你应该研究 CSRF 维基百科条目 https://en.wikipedia.org/wiki/Cross-site_request_forgery
以及不记名令牌的一些信息:https://en.wikipedia.org/wiki/OAuth
你绝对应该添加某种基于无状态令牌的身份验证,考虑到 csrf 令牌仅用于屏蔽 XSS 攻击,而不是用于基于角色和权限对用户进行身份验证和授权。
我正在开发 Laravel API,我想使用不记名令牌与 VueJS 前端进行安全通信。然后我的一个朋友告诉我,这是不必要的,因为 Laravel 已经使用 CSRF Token 来抵御 XSS 攻击。
那么,如果我已经使用了 csrf 令牌,那么我基于令牌的身份验证基本上就没用了吗?为什么?
你在这里谈论的是两件不同的事情。 Bearer token 用于对 API 进行身份验证,例如,CSRF Token 用于防止跨端请求伪造攻击。
不记名令牌是您对外部 api 服务(如护照或会员卡)的登录令牌,因此您被授予访问此外部服务的权限。令牌还告诉服务器person/machine 访问资源的人是谁,因此服务器可以决定他们是否具有正确的权限。
CSRF 令牌可保护您免受请求伪造,即有人从外部服务器或工具向您的服务器发出请求。 CSRF 令牌唯一告诉你的是请求来自使用你网站的人,它不会告诉你那个人是谁或者他们有什么权限。
希望你明白。也许你应该研究 CSRF 维基百科条目 https://en.wikipedia.org/wiki/Cross-site_request_forgery
以及不记名令牌的一些信息:https://en.wikipedia.org/wiki/OAuth
你绝对应该添加某种基于无状态令牌的身份验证,考虑到 csrf 令牌仅用于屏蔽 XSS 攻击,而不是用于基于角色和权限对用户进行身份验证和授权。