ajax的CSRF令牌

时间:2011-01-22 20:16:35

标签: php ajax security zend-framework csrf

我对使用ajax提交的表单有疑问。我用Zend Framework做我的表单。有些是真实的形式,所以我添加了一个Hash元素。其他的是小型操作(如upvote和downvote),所以我用链接来做。

我的问题是我需要使用ajax特别是小表单(链接)。我看到很多问题,但没有足够的全面解决问题。有关如何通过ajax提交表单时如何使csrf令牌顺利运行的详细说明?最好使用Zend Framework,但一般的PHP答案也会有所帮助。

2 个答案:

答案 0 :(得分:7)

您不需要CSRF令牌。您的案例使用HTTP_X_REQUESTED_WITH方法(请参阅例如here)。

答案 1 :(得分:0)

对于那些访问此页面的人来说,可以让csrf使用ajax。

在控制器中,您需要使用通过在操作结束前添加此权限来重新生成哈希:

  

$形式 - >散列> initCsrfToken();

     

$ this-> view-> csrfhash = $ form-> hash-> getValue();

在用于执行ajax的js文件中,您将需要使用选择器来查找创建哈希的实例(因此对于jquery:

  

$(#散列).replaceWith(csrfhash);   实际上,如果你使用replaceWith,你将替换整个隐藏的csrf元素,包括id和name。但这部分应该相当容易。