我正在实现一个PHP应用程序,我在表单中大量使用AJAX来发送和检索值。我正在实现的典型jQuery函数是
(function($){
$.fn.saveCountry = function(destinationUrl) {
this.click(function(){
var formData = $('form').serialize();
$.ajax({
type: 'POST',
url: 'path/to/files/models/directory/process.php',
data: 'option=savecountry&'+formData,
success: function(msg){
if(msg === 'empty') {
alert('Required Values Missing');
} else if(msg == 'DR'){
alert('Duplicate Entry Found');
} else {
destinationUrl(msg);
}
}
});
});
}
}($));
上述函数的问题是它暴露了我的应用程序的应用程序结构。对象url: 'path/to/files/models/directory/process.php',
显示有关我正在使用的目录结构的信息。这是一种威胁,因为任何有权访问控制台的人都能够监视请求发生的事情,并可能滥用它。无论如何我可以从外界隐藏这些数据吗?
答案 0 :(得分:3)
最终没有。
如果愿意,用户将始终能够找到ajax请求的URL。
这可以像打开萤火虫和观察所提出的请求一样简单。
我所采用的是某种URL重写,例如URL重写,以隐藏文件系统的物理结构。这样,您就不会对人们看到您的网址感到特别关注。
答案 1 :(得分:2)
我不是一名PHP程序员(多年前就触及过它),所以我会给你一个通用答案。
只需创建一个代理页面,该页面隐藏了应用程序的内部工作方式。代理页面只是浏览器和应用程序本身之间的内容。它的作用是将您传递的ID与AJAX调用一起转换为应用程序中的函数(它可以做更多的事情,但我试着保持这个简单)。它传递您在AJax调用中提交的数据。代理会将从函数传回的任何数据发回给浏览器。
JavaScript代码看起来与您已有的代码几乎相同。唯一的变化是url
将是您的代理页面的URL,而data
也将包含一个ID,其值对应于您希望在该代理页面中执行的函数的值代理。
您可以通过此代理页面路由所有AJAX调用,因为每个函数都有唯一的ID。
这是一个预先编程的方法,但是当你完成这一步时,你可以在将来的项目中重用部分代码。
答案 2 :(得分:0)
没有。您需要以任意请求不会导致任何问题的方式编写服务器端代码。