[英]jQuery autocomplete - Hide php request page contents
我有一个输入字段,使用从PHP页面获取的文本自动完成。 它运行良好但是如果直接访问它可以隐藏PHP页面上的文本吗? 我意识到它的工作方式就像用户实际访问过那个页面但是有一个技巧可以实现吗?
不,你不能:正如你所说的那样,用户正在请求内容(以及用户的浏览器),因此内容必须是用户可访问的,每个“隐形”技术都可以被略显熟练的用户轻易击败。
我能想到的第一个技巧是使用http标头。 在为自动完成加载数据的代码中设置一个自定义数据,您的php页面会读取该内容以写入其内容,否则您不会显示任何内容。 当用户尝试直接访问该页面时(将该URL放在浏览器上)它没有显示任何内容,因为浏览器没有放置您的自定义标头
$.ajax({
url: "data.php",
type: "GET",
dataType: "html",
headers: {custom:'showdata'},
success:function(){}
});
我使用这个技巧让我的页面知道要返回什么样的内容类型,因为有时它应该是json,其他时候它应该是html
显然它并不完美,但许多用户不会看到你试图隐藏的数据
这是一种简单的方法,可以让它变得更加隐蔽。 在自动填充数据源页面上,检查您选择的任何名称的变量。 例如:
if($ _GET ['ninja']!='chop'){return'抱歉,此页无法直接访问'; } else {//生成并返回此处的数据}
是的,它可以被击败。 但要考虑到“有什么意义?” 您是否存储关键任务数据? 真的不被人看见吗? 这就是为什么许多小型网站包含可怕的不安全和XSS易受攻击的代码,但从未被黑客入侵......对于黑客来说,花时间开发自定义黑客以获取其中的数据是不值得的。 另一方面,黑客攻击Windows提供了数百万(数十亿?)的目标来处理各种邪恶的事情。 我当然不是说你的网站并不重要,但似乎不一定需要三重冗余安全性。
这应该工作,将它放在页面的顶部
if($_SERVER['HTTP_X_REQUESTED_WITH'] !='XMLHttpRequest'){
die();
}
jQuery使用AJAX reqeusts自动发送标头
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.