最广泛发现的搜索CSRF预防技术的解决方案是MVCAntiForgeryToken(随MVC 3一起实现),其中服务器的客户端必须在POST主体中发布验证令牌 . 在服务器端,它将根据Cookie中存在的令牌进行验证 .
在自定义标头中发送验证令牌是否同样安全,在服务器端验证自定义令牌的值是否存在于cookie中?
最广泛发现的搜索CSRF预防技术的解决方案是MVCAntiForgeryToken(随MVC 3一起实现),其中服务器的客户端必须在POST主体中发布验证令牌 . 在服务器端,它将根据Cookie中存在的令牌进行验证 .
在自定义标头中发送验证令牌是否同样安全,在服务器端验证自定义令牌的值是否存在于cookie中?
1 回答
它甚至更安全:)因为即使攻击者可以为当前事务获取有效的csrf令牌,他也必须 Build 跨域ajax请求以在请求中包含自定义头 . 如果用户在他的浏览器中禁用了js,那么攻击者就会被禁止:) . 然而,它可以被Java applet覆盖......但是你知道如果用户没有受过教育而且攻击者真的很有动力那么你可以做的很少;) .
但是存在一个问题,即如果用户通过防火墙或公司代理访问我们,则不会转发所有自定义标头 . 所以我认为这是使用字段而不是自定义标头的主要原因 . 虽然有一个 Headers 可以阻止XSRF攻击: Origin ,The web origin concept也作为附加信息Content Security Policy 1.1它只是一个草稿,但在那里提出了一些有趣的想法 .