【发布时间】:2013-02-13 18:29:16
【问题描述】:
我已经四处搜索,但找不到任何关于此的信息。我是唯一一个体验过 CodeIgniter 中的 CSRF 保护不适用于页面缓存的人吗?
我有什么:
将通过此行缓存的网页:
$this->output->cache( 120 );
在该页面上的 Javascript 中,我有一个 Ajax 调用,其中数据也包含 CSRF 令牌。禁用缓存或禁用 CSRF 保护时一切正常。
是否有人知道解决方法或其他方法,以便我可以启用缓存和 CSRF 保护?
谢谢!
【问题讨论】:
-
当 CSRF 与 AJAX 和页面缓存配对时,什么究竟不能正常工作?您能否展示更多代码(例如您的 ajax 调用)以及您是如何生成表单的(我假设使用
form_open())? -
页面缓存也会缓存表单中的 csrf 令牌,因此在 csrf 失败的情况下不会刷新。
-
我问是因为我假设
form_open()会为您处理这个问题,就像基准测试 (ellislab.com/codeigniter/user-guide/general/caching.html) 一样。 -
是的,我正在使用 form_open(),但 CodeIgniter 的处理方式与基准测试不同。
标签: codeigniter caching csrf