背景
因为高德地图的 key 被盗用,导致额度不耗尽。增加了不必要的成本,所以对 key 的保护尤为重要。
目前情况
现在项目中使用高德地图是直接将 key 写在代码中。
在调用高德 api 的时候,key 会明文拼接在请求地址上,因此会被别有用心的人利用。
解决方案
业务运营多年,高德地图的 key 已是多年前创建的,所以第一步就是创建一个新的 key。
明文密钥配合域名白名单
2021年12月02日以后创建的 key 需要配合安全密钥一起使用,而且添加了域名白名单配置。
项目代码做个简单的修改即可:
如果在域名白名单中的调用接口能正常使用,如域名不在白名单中,则提示没有权限。
从此看已经起到了限制作用,但实际是防君子不防小人的方案。不建议在生产环境使用,至于原因,你琢磨琢磨。
代理转发请求
因为需要 key 需要配合安全密钥一起使用,不然就会提示没有权限,所以只需要将安全密钥“隐藏”起来就可以了。
请求会将 key 和安全密钥明文拼接在一起,为了将安全密钥“隐藏”起来,只需要将请求代理到自己的服务器上,然后在服务器上将安全密钥拼接上。
以 Nginx 为例:
项目代码配置代理地址即可:
到处,完美收官。
后记
个人项目,可以随意玩耍。公司项目凡是涉及到钱财的东西都要谨慎一些,不要低估灰产的能力。