-1

我正在建立一个有一点投票系统的 Drupal 站点。我有一个 PHP 页面,它接受参数并相应地更新投票数据库。如何允许通过我的 Drupal 站点上的此 AJAX 访问此页面,但以其他方式限制外部用户访问此 URL 以防止伪造投票?

4

2 回答 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 回答