缓存的页面包含CSRF保护形式

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.8,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

缓存的页面包含CSRF保护形式

CSRF标记是不同的对于每一个用户。这就是为什么你需要谨慎,如果你试图与形式包括缓存页面。

更多信息关于CSRF保护在Symfony工作,请检查欧宝娱乐app下载地址CSRF保护

为什么缓存页面CSRF令牌是有问题的

通常,每个用户被分配一个独特的CSRF令牌,这是存储在会话中进行验证。这意味着,如果你缓存页面与含有CSRF令牌的一种形式,你会缓存CSRF的令牌第一个用户只。当用户提交表单时,令牌不匹配的令牌存储在会话中,所有用户(第一除外)提交表单时将失败CSRF验证。

事实上,许多反向代理缓存(如清漆)会拒绝一个页面CSRF令牌。这是因为为了保持PHP发送cookie会话打开和清漆的默认行为是与饼干没有缓存的HTTP请求。

如何缓存的页面,还可以使用CSRF保护吗

缓存的页面包含一个CSRF令牌,你可以使用更先进的缓存技术应急服务国际公司的片段,你缓存整个页并嵌入表单在ESI标签没有缓存。

另一个选择是加载形式通过一个未AJAX请求,但缓存其他HTML响应。

或者你甚至可以负载CSRF令牌和一个AJAX请求表单字段的值替换它。看一看hinclude.js一个很好的解决方案。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。