高德地图 JS API key 的保护,安全密钥的使用方案

背景

因为高德地图的 key 被盗用,导致额度不耗尽。增加了不必要的成本,所以对 key 的保护尤为重要。

目前情况

现在项目中使用高德地图是直接将 key 写在代码中。在这里插入图片描述
在调用高德 api 的时候,key 会明文拼接在请求地址上,因此会被别有用心的人利用。

解决方案

业务运营多年,高德地图的 key 已是多年前创建的,所以第一步就是创建一个新的 key。
在这里插入图片描述

明文密钥配合域名白名单

2021年12月02日以后创建的 key 需要配合安全密钥一起使用,而且添加了域名白名单配置。
在这里插入图片描述
项目代码做个简单的修改即可:
在这里插入图片描述
如果在域名白名单中的调用接口能正常使用,如域名不在白名单中,则提示没有权限。
在这里插入图片描述

从此看已经起到了限制作用,但实际是防君子不防小人的方案。不建议在生产环境使用,至于原因,你琢磨琢磨。

代理转发请求

因为需要 key 需要配合安全密钥一起使用,不然就会提示没有权限,所以只需要将安全密钥“隐藏”起来就可以了。
在这里插入图片描述

请求会将 key 和安全密钥明文拼接在一起,为了将安全密钥“隐藏”起来,只需要将请求代理到自己的服务器上,然后在服务器上将安全密钥拼接上。

以 Nginx 为例:
在这里插入图片描述
项目代码配置代理地址即可:
在这里插入图片描述

到处,完美收官。

后记

个人项目,可以随意玩耍。公司项目凡是涉及到钱财的东西都要谨慎一些,不要低估灰产的能力。

在 Nuxt.js 使用高德地图时,需要获取高德地图 Web APIKey密钥。可以按照以下步骤进行操作: 1. 在高德开放平台注册账号并创建应用:https://lbs.amap.com/dev/key/app 2. 在应用管理找到已创建的应用,点击“管理”按钮,在“应用详情”可以看到“应用的Key”,将其复制。 3. 在 Nuxt.js 项目安装 `@nuxtjs/axios` 和 `@amap/amap-jsapi-loader` 依赖: ``` npm install @nuxtjs/axios @amap/amap-jsapi-loader --save ``` 4. 在 `nuxt.config.js` 配置 `@nuxtjs/axios` 和 `@amap/amap-jsapi-loader`: ```js // nuxt.config.js export default { modules: [ '@nuxtjs/axios' ], axios: { baseURL: '/' }, plugins: [ { src: '~/plugins/amap', ssr: false } ] } ``` ```js // plugins/amap.js import Vue from 'vue' import AmapVue from '@amap/amap-vue' import AmapLoader from '@amap/amap-jsapi-loader' Vue.use(AmapVue) AmapLoader.load({ key: 'YOUR_AMAP_KEY', version: '2.0', plugins: [], AMapUI: { version: '1.1', plugins: [] }, Loca: { version: '1.3.2' } }).then((AMap) => { console.log('AMap loaded:', AMap) }) ``` 5. 在页面使用 AmapVue 组件: ```vue <template> <div> <amap-vue :center="center" :zoom="zoom"> <amap-marker :position="center" /> </amap-vue> </div> </template> <script> export default { data() { return { center: [116.397428, 39.90923], zoom: 13 } } } </script> ``` 注意:在 `plugins/amap.js` ,需要将 `YOUR_AMAP_KEY` 替换为你申请的高德地图 Web APIKey。另外,在 `plugins/amap.js` 也可以配置密钥(secret),但是一般情况下并不需要配置密钥
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值