我最近setup an autocomplete on an input field with JQuery。我将其源代码设置为我的服务器上可公开访问的PHP页面。
$(document).ready(function() {
$("input#q").autocomplete({
minLength: 3,
delay: 500,
autoFocus: true,
source: "ac.php"
});
});
ac.php在对接收到的输入进行清理后轮询服务器上运行的搜索服务。
我想知道的是,是否有任何方法只能通过自动填充表单强制访问ac.php?我在考虑检查引用,但可以通过tamperdata等工具绕过它。
我是否还需要担心让助手公开?
由于
答案 0 :(得分:2)
这是不可能的。事实上,任何ajax请求都是可以伪造的普通HTTP请求。
我是否还需要担心让助手公开?
不,不。将其视为您网站上的任何其他资源(页面)。
答案 1 :(得分:1)
不是没有某种形式的身份验证,也许是oauth,digest等。我个人不会打扰。 您可以使用服务器上每5分钟生成的密钥并将它们作为请求变量发送,然后尝试匹配它们但是这仍然允许短期访问并导致比它解决的更多问题。
答案 2 :(得分:0)
您是否需要担心取决于您的具体情况。了解Ajax调用请求的一种方法是检查PHP脚本中的X-Requested-With
标头。它将由jQuery设置为XMLHttpRequest
。在这里查看例如:http://davidwalsh.name/detect-ajax