我在Google地图中制作了一个风格化的地图,我需要一个API密钥才能使其正常工作。我做到了,如果API密钥不受限制,它可以正常工作。如果我在特定的IP或域上限制它,它不起作用,但这不是我想在这里讨论的问题。我在想,为什么不让我的钥匙不受限制?所以我在网上搜索they said,出于安全原因,密钥不应该是不受限制的,所以他们建议
将它们存储在环境变量或应用程序源树之外的文件中
我问自己,即使我将我的API密钥放在外部文件中,也可以使用php或其他任何东西,不管怎样它都不会显示在html的源代码中?我的意思是,在how-to页面中他们说要写这段代码
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
没关系,但无论我设置 YOUR_API_KEY 的方式是什么,无论是否从外部文件获取,它都会显示在我的html源代码中无论如何。
所以,
有人知道将API密钥放在外部文件上时的含义吗?
如果我找到一种方法将其放在外部文件上,我可以不受限制吗?如果是这样,会发生什么(从安全角度讲话)?
答案 0 :(得分:1)
让API完全不受限制是一种糟糕的做法,几乎在任何情况下都应该避免使用。所有具有恶意意图的人都需要查找您的API密钥,然后突然他们可以访问API密钥允许您访问的几乎所有功能。始终将密钥限制在最低限度。
由于您要将地图嵌入到iframe中,因此该脚本将在客户端运行,这意味着在隐藏API密钥时没有太多内容,但是如果您将密钥限制为仅查看地图(以及用户方面需要的任何其他功能)不需要隐藏它,您可以将其留在那里,如文档所示。
您阅读的有关API安全性最佳做法的文档更适用于处理敏感数据的Google API应用程序,或者密钥可以访问可能严重危害应用程序安全性的功能(如果已访问)。这不适用于您使用地图描述的方案。