我正在开展一个需要将Google地图与我的网站集成的项目。现在,我的数据(纬度/经度等)位于MySQL表中。 PHP查询在MySQL上运行以动态生成XML文件。然后,请求HTML页面使用此XML文件,然后使用JavaScript在Google Map上绘制这些点。
请求此XML文件的HTML代码段是:
downloadUrl("generatexml.php", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var html = "<b>" + name + "</b> <br/>" + address;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon
});
bindInfoWindow(marker, map, infoWindow, html);
}
});
上面提到的函数downloadUrl定义为:
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
现在,问题是,如果某个目录类型www.mydomain.com/generatexml.php
,那么他们将能够在他的浏览器中看到从MySQL数据生成的XML文件。这可以杀死我的网站!有人可以轻松使用我的数据,我所有的数据收集工作都会浪费掉。我将把这个网站用于非营利目的,但有人可以通过XML窃取这些数据并将其卖掉,我不想发生这种情况。
那么,是否存在隐藏此文件的方式,当有人打开HTML页面时,请求的HTML页面是否能够使用它?
答案 0 :(得分:0)
无法保护此文件,因为客户端JavaScript需要渲染地图。
如果您希望数据安全,则必须呈现此服务器端,而不是在XML文件中公开详细信息。
另外,我注意到您的代码段可能容易受到XSS的攻击,因为您手动构建XML而不对值进行编码。
e.g。 var html = "<b>" + name + "</b> <br/>" + address;
如果“name
”或“address
”包含标记字符(例如“<
”),则可以拆分XML并将任何内容插入到文档中(取决于数据来自,但最好将所有数据视为不受信任。