0

我正在开发一个需要将 Google 地图与我的网站集成的项目。现在,我的数据(纬度/经度等)在 MySQL 表中。PHP 查询在 MySQL 上运行以动态生成 XML 文件。然后,请求的 HTML 页面使用这个 XML 文件,然后使用 JavaScript 在 Google 地图上绘制这些点。

请求此 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 页面仍然能够使用它?

4

1 回答 1

0

无法保护此文件,因为客户端 JavaScript 需要它来呈现地图。

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

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

例如var html = "<b>" + name + "</b> <br/>" + address;

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

于 2013-11-13T09:53:26.743 回答