隐藏来自网站访问者的动态生成的XML文件

时间:2013-11-12 17:47:58

标签: xml security dynamic code-access-security

我正在开展一个需要将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页面是否能够使用它?

1 个答案:

答案 0 :(得分:0)

无法保护此文件,因为客户端JavaScript需要渲染地图。

如果您希望数据安全,则必须呈现此服务器端,而不是在XML文件中公开详细信息。

另外,我注意到您的代码段可能容易受到XSS的攻击,因为您手动构建XML而不对值进行编码。

e.g。 var html = "<b>" + name + "</b> <br/>" + address;

如果“name”或“address”包含标记字符(例如“<”),则可以拆分XML并将任何内容插入到文档中(取决于数据来自,但最好将所有数据视为不受信任。