【问题标题】:Protect KML file from downloading or accessing保护 KML 文件不被下载或访问
【发布时间】:2012-05-24 13:07:52
【问题描述】:

我正在尝试保护我的 KML 文件不被下载或轻松提取其数据。我想要的只是要在谷歌地图或谷歌地球中查看的文件,但不允许任何人“轻松”下载或提取数据(kml 文件不会公开提供)。我的 kml 文件是深入和独家分析的结果,这是我想对竞争对手隐藏的签名。

还有其他方法可以将 kml 转换为无法轻松获取数据的格式。我的 KML 文件包含 3D 多边形。

我理解可以通过某种方式下载或提取所有可见内容的概念,

【问题讨论】:

  • 在过去的几个月里,你有没有得到任何帮助?我很想知道那里有什么。
  • 嗨,您知道如何保护您的 KML 文件吗?我现在正在一个 PHP 应用程序中处理它...
  • Allisone 建议的选项 3 足以保护您的 KML 文件不被轻松下载。请注意,Google 也会缓存您的 KML 文件,因此它不会在每个用户请求时加载它!

标签: security google-maps kml google-earth data-protection


【解决方案1】:

我有 4 个答案或 0 个答案,具体取决于您的项目。

  1. 使用 Google Maps Api for Business(每年约 10.000 美元),您可以 生成客户端 ID 并使用它来保护 Fusion Table(可以 在 Google Drive 中创建),您可以在其中导入您的 KML 以及您 然后可以使用 Google Maps Api 显示。这将是完美的解决方案,但如果没有 Google Maps Api for Business,您的 Fusion Table 将不受保护,因此任何人都可以访问 在 Google Drive 中查看并复制粘贴 Kml 多边形的表示。

  2. 使用 Google Maps Engine (/Lite) 您可以导入您的 Kml 到 Google 也是如此(如果您使用 Lite,那么您首先需要导入到 Google “我的地图”,然后您可以在 Google Maps Engine Lite 中 从“我的地图”导入)。我不知道非精简版的定价。一种 Google Maps Engine 地图可以共享,因此它只能在 这个唯一可见的版本我还没有找到下载的方法或 查看我们想要的原始 kml 数据。都好听 但是您在 Maps Engine Lite 中仅限于 3 层,而且我还没有找到导入所有多边形的方法( 我的情况)一次进入一层。我只能像看起来那样一点一点地导入它们(设法将 10 个多边形,总共 353 个点导入一层)。每次导入都会导致一层,无法将东西从一层移动到另一层,并且由于某种原因,我似乎无法导入一些多边形。 编辑:
    我可以导入所有多边形,一个多边形(由于我的多边形的算法简化)得到了一个交叉点(线交叉),一旦我修复了那个部分,导入就不再抛出任何错误,但我现在看到我只能使用包含图例的 iframe 嵌入该地图,所以这个解决方案对我来说毫无意义。

  3. 仅使用 Google 地图服务器的白名单将您服务器上的 KML 访问权限限制为 Google 服务器,这些服务器可能会请求您的 KML。问题:在网上找不到这样的清单...必须在某些地方收集 方式第一。

  4. 还有博文Protecting KML Files from general public access in Google Maps 和Protect KML / KMZ Files from Unauthorized Access Using Cryptography

【讨论】:

  • 选项 3 可能是最简单的解决方案。由于 KML 文件由 Google 服务器加载,而不是由用户浏览器加载。
【解决方案2】:

您的问题是基于被称为“通过默默无闻的安全”的计算机安全谬误。谬误是这样的。您说您不想“轻松”下载它。你可以让它变得困难,但只要有可能,一旦有人弄清楚,他们就会编写一个脚本来自动完成它,然后它就“容易”了。你的问题没有答案,因为这是不可能的。您提供的任何内容都是可盗版的,任何数据都是可重构的。

【讨论】:

  • 诚然,没有办法以某种方式公开 100% 的数据。但往往是足够硬化。你有房子吗?房子周围有围栏吗?围栏不能提供 100% 的保护,但它可以防止在您的花园中轻松行走或做某事。
【解决方案3】:

为什么不直接保存 kml 文件并将其剪切/粘贴到密码加密的 USB 驱动器上,例如金士顿或 Kanguru 防御者。然后只需从您的 USB 磁盘打开 kml。

【讨论】:

  • 这更像是一种解决方法,可能更适合作为评论。
【解决方案4】:

您可以检查 $_SERVER["HTTP_USER_AGENT"] 变量,如果是来自 google,则从 php 生成 kml。

$agent = "Kml-Google";
$google = strpos($_SERVER["HTTP_USER_AGENT"], $agent);
($google !== FALSE) or die;
header('Content-Type: application/vnd.google-earth.kml+xml kml');
header('Content-Disposition: attachment; filename="otras.kml"');
?>
<?xml version="1.0" encoding="UTF-8"?>
<kml xml ...

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    相关资源
    最近更新 更多