这是为了防止使用 PHP 和 Ajax 的 CSRF 所需要做的吗?

Posted

技术标签:

【中文标题】这是为了防止使用 PHP 和 Ajax 的 CSRF 所需要做的吗?【英文标题】:Is this all that needs to be done to prevent CSRF with PHP and Ajax? 【发布时间】:2012-01-17 21:58:50 【问题描述】:

我想确保自己理解并正确应用令牌以避免 CSRF?

我的 jQuery ajax 请求中的数据行:

data: Id:getParameterByName("id"), Token:"<?php echo $csfrToken; ?>" ,

我的 PHP 检查处理发布数据的文件:

if (isset($_SESSION['TOKEN']) && $_SESSION['TOKEN'] == $_POST['Token'])  

我还需要处理 ajax 请求吗?我所做的只是在包含 ajax 请求的页面上创建一个令牌。然后我将创建的令牌发布到我的 ajax 处理程序页面,然后检查以确保它们相同。还有什么需要做的吗?

【问题讨论】:

不,你知道了。有greater lengths you could go to,但从这里开始收益递减。 【参考方案1】:

你所做的看起来不错。这就是 Zend Framework 的 Zend_Form_Element_Hash 对表单的处理方式,这也适用于 AJAX 请求。

【讨论】:

谢谢。这很简单。感觉就像因为简单而错过了一些东西。

以上是关于这是为了防止使用 PHP 和 Ajax 的 CSRF 所需要做的吗?的主要内容,如果未能解决你的问题,请参考以下文章

防止直接访问由ajax函数调用的文件[重复]

使用 xhprof 分析 PHP 代码时,如何防止它破坏来自 JavaScript 客户端的 Ajax 调用?

jquery ajax如何防止多次提交

如何使用 AJAX/JQuery 调用多个 PHP 脚本?

如何使用 jQuery 的 $.ajax() 函数来运行 php 脚本? [复制]

防止多次执行 JavaScript 函数