这是为了防止使用 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 所需要做的吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 xhprof 分析 PHP 代码时,如何防止它破坏来自 JavaScript 客户端的 Ajax 调用?