在这个职位中,有一段提到无需在登录页面中验证防伪造令牌的场景:
什么时候可以取消防伪令牌?通常,如果目标是URL,并且访问该URL没有副作用,那么您不需要在该URL中包含防伪造令牌。
我理解CSRF的攻击是如何工作的,但我对这段很遗憾。上面写着:
是否有一个不是URL的目标?什么是“副作用”的例子?
我有一个ASP.NET MVC应用程序,托管在subdomain.domain.com这样的URL上。我的用户收到以下错误:
“提供的防伪造令牌用于与当前用户不同的基于索赔的用户。”“抗伪造cookie令牌和表单字段令牌不匹配。”“提供的防伪造令牌是为用户提供的”,但当前用户是>“XYZ”。
换句话说,我的问题是,在什么情况下,不使用防伪造令牌登录页面是可以的?
发布于 2019-02-21 22:14:45
访问URL可能会产生副作用。例如,如果我登录到Amazon,访问一个URL可能会导致一个项目被购买并发送给我(单击buy)。这是个副作用。或者,它可能会登录我,或者登录我,或者更新一些设置。这些也是副作用。
一般来说,如果一个操作改变了服务器上的某些(持久)状态,或者在这个世界上有一些持久的可观察的效果,那么它就有一个副作用。
发布于 2020-02-20 04:51:16
我的理解是,真正的问题是存储auth凭据的cookie,因为浏览器会自动将其发送到URL。如果您不使用cookie,并且没有总是根据请求发送auth数据的脚本,则不需要防伪造令牌。如果你想一想的话,使用它是没有意义的。如果您只使用JWT令牌或其他令牌(唯一字符串),则它与发送防伪造令牌是相同的,因为最终这就是防伪造令牌。您还应该使用SSL或TLS。
一般规则:不要使用曲奇。他们一次又一次地被证明是一个糟糕的设计模式。
https://security.stackexchange.com/questions/204041
复制相似问题