我正在建立一个有一点投票系统的 Drupal 站点。我有一个 PHP 页面,它接受参数并相应地更新投票数据库。如何允许通过我的 Drupal 站点上的此 AJAX 访问此页面,但以其他方式限制外部用户访问此 URL 以防止伪造投票?
问问题
82 次
2 回答
4
AJAX == 常规 HTTP 请求。您无法将 AJAX 请求与“正常访问”区分开来。没有办法阻止这种情况。
为了防止错误投票,您需要在投票系统中建立这种安全性。需要注册、使用会话和随机数或任何必要的东西。但试图“阻止非 AJAX 请求”并不是解决方案。
于 2013-04-09T04:34:17.233 回答
2
您可以依赖'X-Requested-With: XMLHttpRequest'
大多数标准浏览器附加到每个 Ajax 请求的 HTTP 标头。
然而,正如@deceze 指出的那样,它远没有被认为是“安全的”。通过使用 Fiddler 或以编程方式发出包含此标头的“正常”http 请求非常容易。
如果只需要通过简单刷新浏览器地址栏来限制投票,只需更改脚本以使用 httpPOST
动词获取投票值。
于 2013-04-09T09:26:16.953 回答