保护KML文件不被下载或访问

8
我正在尝试保护我的KML文件,防止其轻易地被下载或提取数据。我希望文件可以在Google Maps或Google Earth中被查看,但任何人都不允许轻易地下载它或提取数据(KML文件不会公开可用)。我的KML文件是深度和独家分析的结果,这是我想要隐藏对竞争对手的签名。
此外,是否有将KML转换为数据不易从中获取的格式的替代方法。我的KML文件具有三维多边形。
我了解“一切可见的东西都可以被下载或以某种方式提取”的概念。

2
这几个月你有进展吗?我很好奇现在有什么新的进展。 - cytinus
你好,你找到如何保护你的KML文件了吗?我现在正在一个PHP应用程序中处理它... - kiks73
Allisone的建议中的第三个选项足以保护您的KML文件免受轻松下载的影响。请注意,Google也会缓存您的KML文件,因此不会在每个用户请求时加载它! - D.A.H
4个回答

2

根据您的项目,我有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中导入)。我不知道非Lite的价格。 Google Maps Engine地图可以共享,因此只能查看,在此仅查看版本中,我没有找到下载或查看原始kml数据的方法,这就是我们想要的。听起来很好,但是Maps Engine Lite限制了3个图层,并且我没有找到一次将所有多边形(在我的情况下为区域)导入到一个图层中的方法。似乎我只能逐个导入它们(成功将10个多边形总共353个点导入到一个图层中)。每个导入都会生成一个图层,不能将内容从一个图层移动到另一个图层,并且由于某些原因,有些多边形似乎无法导入。编辑:
    我可以导入所有多边形,其中一个多边形(由于我的多边形的算法简化)出现了交集(线交叉),只要我修复了那部分,导入就不会再抛出任何错误,但是我现在看到只能使用包含传奇的iframe嵌入该地图,因此这个解决方案对我来说无济于事。

  3. 使用Google地图服务器的白名单,仅将KML限制为Google服务器访问。问题:无法在线找到这样的列表...必须首先以某种方式收集。

  4. 还有博客文章保护Google Maps中普通公众访问的KML文件使用密码保护KML / KMZ文件免受未经授权的访问


选项3可能是最简单的解决方案。因为KML文件是由Google服务器加载的,而不是由用户浏览器加载的。 - D.A.H

0
为什么不直接将KML文件保存并复制/粘贴到密码加密的USB驱动器上,例如Kingston或Kanguru Defender。然后只需从您的USB磁盘打开KML即可。

这更像是一种解决方法,可能更适合作为注释。 - peege

0

你的问题基于计算机安全中已知的一种谬论,即“通过深奥性来保证安全”。这个谬论是这样的。你说你不想让它“容易”被下载。你可以让它变得困难,但只要有一个人找到了方法,他们就会编写脚本自动化下载,然后它就变得“容易”了。你的问题没有答案,因为这是不可能的。你提供的任何内容都是可盗版的,任何数据都是可重构的。


确实,没有100%的数据可以公开使用。但通常已经足够安全了。你有房子吗?你的房子周围有篱笆吗?篱笆并不能提供100%的保护,但它可以防止人们轻易地进入你的花园或者做一些事情。 - D.A.H

0

您可以检查$_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 ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接