1

我最近使用 JQuery 在输入字段上设置了自动完成功能。我将其源设置为我服务器上可公开访问的 PHP 页面。

$(document).ready(function() {
    $("input#q").autocomplete({
        minLength: 3,
        delay: 500,
        autoFocus: true,
        source: "ac.php"
    });
});

ac.php 在清理接收到的输入后轮询在服务器上运行的搜索服务。

我想知道是否有任何方法只能通过自动完成表单强制访问 ac.php?我在考虑检查引荐来源网址,但可以使用 tamperdata 等工具绕过。

我什至需要担心让助手可以公开访问吗?

谢谢

4

3 回答 3

2

这是不可能的。任何ajax请求其实都是可以伪造的普通HTTP请求。

我什至需要担心让助手可以公开访问吗?

不,你没有。将其视为您网站上的任何其他资源(页面)。

于 2012-09-13T23:57:34.743 回答
1

并非没有某种形式的身份验证,也许是 oauth、digest 等。我个人不会打扰。您可以使用服务器上每 5 分钟生成的密钥并将它们作为请求变量发送,然后尝试匹配它们,但这仍然允许短期访问并导致比它解决的问题更多的问题。

于 2012-09-13T23:59:48.287 回答
0

您是否需要担心取决于您的情况。了解请求是否来自 Ajax 调用的一种方法是检查X-Requested-WithPHP 脚本中的标头。它将由 jQuery 设置为XMLHttpRequest. 看这里例如:http ://davidwalsh.name/detect-ajax

于 2012-09-14T00:02:53.903 回答