我应该采取哪些措施来保护我的Google Maps API密钥?
我已经获得了我的网域的Google Maps API密钥。
我获得密钥时提供的示例显示了embedded请求参数中的密钥,例如:
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true_or_false&key=my-key" type="text/javascript"></script>
我明白,请求中的引荐来源字段必须与我的域相匹配,是否可以在脚本标记等中显示我的密钥? 或者还有其他的步骤我应该采取?
考虑到这个关键字必须被包含在你的HTML页面的<script>
标签中,为了从谷歌的服务器上载入JS文件/数据,你不能做任何事情:
- 你必须把它放在你的HTML文件中
- 每个人都可以看看那些。
不过,这并不重要:如果有人试图在另一个域名上使用此密钥,他们将得到一个Javascript警报 – 这对于其他用户来说并不好。
所以:
- 没有什么可以做的; 这是它的工作方式
- 而且我没有太多的担心。
虽然这个问题已经过了几年了,但这是一个非常好的问题。 据我所知,暴露API密钥,即使他们是域匹配,仍然可能导致滥用。 Security Stack Exchange上有一篇文章详细介绍了这一点。
Google在这里发布了您可以采取的避免潜在滥用的步骤:
安全使用API的最佳实践指南: https : //support.google.com/cloud/answer/6310037?hl = zh_CN
虽然我会build议把所有的东西放在船上,但是有一种方法可以处理由Brabster发布的具体示例,并且将密钥存储在环境variables中 。 这样你所需要做的就是将键replace为存储在项目中的服务器端variables。 但是,请确保不要将存储密钥的文件提交到公共存储库。
Google API控制台上的设置可以保护您的API带宽使用不被其他域/用户使用。 您可以通过在API控制台上使用引用来限制和保护。 API密钥将拒绝不符合您的限制的推荐人。
这里是来自Google for API Key的屏幕截图,Google只能使用它的两个域名。
我不明白为什么你会打扰。 是不是只有从您的域名有效的关键? IIRC,唯一的信息编码是你的域名,除了谷歌可能添加的任何信息,例如它的生成时间。