使用Ajax笨CSRF保护错误(codeigniter csrf protection error

2019-09-16 10:30发布

我有一个小问题就在这里,我不能修复,这个帖子经过,但响应返回“500内部服务器错误”

谁解决?

在CI论坛搜索后,我发现这此链接笨,CSRF保护与-阿贾克斯 ,但我不能用it.can解决任何一个帮助我吗?

Answer 1:

你应该在你的AJAX POST请求,以获得行动工作CSRF关键。

但是,你只得到的数据,因此使用method:'get' ,而不是method:'post'应该做的伎俩,让你的要求工作。

看到这个问题上,当使用POST以及何时使用GET精彩的讨论

如果你是,的确,打算过帐数据到服务器,并抱怨缺乏CSRF关键的,有两种方法将其添加到该请求:

  • 使用插件,以允许原型提取从被由笨设置的跨站请求伪造的cookie中的数据; 这可能是更优雅,但会增加多一点你的总脚本; 这里有一个关于如何访问原型饼干更详细后http://codeinthehole.com/writing/javascript-cookie-objects-using-prototype-and-json/

  • 如果你把从现有的形式这一要求,它应该有一个包含密钥,您将能够简单的东西,如访问隐藏输入字段var csrf = $("input[name=csrf_key]").val(); (这是jQuery的语法,但我敢肯定的原型版本不太远)。 如果没有在页面形式,只写一个echo form_open(); form_close(); echo form_open(); form_close(); 某处,以确保隐藏字段得到由CI打印出来。

最后,请确保您发送的值旁边的POST请求,以确保你是谁不希望hackz0r服务器很酷的家伙。 你应该将此参数添加到JS Ajax请求:

parameters: {'csrf_key' : csrf}

下CSRF是您获取的密钥(从cookie或隐藏输入)变量。 确保名称是正常的! 如果您要提取的饼干,确保饼干名称与一组一致config/config.php 。 这同样适用于输入令牌!

希望这可以帮助!



文章来源: codeigniter csrf protection error with ajax