地图key介绍
以高德地图为例。高德地图提供的API Key是开发者调用高德地图各项服务时必须使用的身份验证凭证。功能非常多,这里介绍几个核心功能:
- 地图展示:通过Key加载高德地图的矢量/卫星地图
- 地理编码:将地址转换为经纬度
- 路径规划:提供驾车、步行、骑行等导航路线。
- 地点搜索:POI检索,如搜索“附近的加油站”。
- 逆地理编码:将经纬度转换为具体地址
泄露Key引发的问题
费用增加:高德地图API通常有免费配额,但一旦超出免费额度,额外的请求会产生费用。
服务中断:如果发现API Key被泄露并被滥用,服务提供商可能会对相关密钥进行封禁或其他措施,可能导致你的应用服务中断。
滥用和超额使用:如果API Key泄露,其他人可能会滥用你的API Key,导致你的账户超额使用配额。
申请key
两种方式获取key:
创建好账号后,在控制台点击应用管理-创建新应用,来获取key
有免费使用的次数限制
如果超出了次数限制可以进行充值
漏洞发掘
此类漏洞经常出现在公司官网关于公司或者联系我们板块中的地图功能
key主要在前端、请求包体中泄露,响应包泄露非常少见。
漏洞利用
国内主流的地图厂商分别有:高德、百度、腾讯,这里给出对应的请求示例:
https://restapi.amap.com/v3/direction/walking?origin=116.434307,39.90909&destination=116.434446,39.90816&key=这里写key
{/tabs-pane}
{tabs-pane label="高德jsapi"}
https://restapi.amap.com/v3/geocode/regeo?key=这里写key&s=rsv3&location=116.434446,39.90816&callback=jsonp_258885_&platform=JS
{/tabs-pane}
{tabs-pane label="高德小程序定位"}
https://restapi.amap.com/v3/geocode/regeo?key=这里写key&location=117.19674%2C39.14784&extensions=all&s=rsx&platform=WXJS&appname=c589cf63f592ac13bcab35f8cd18f495&sdkversion=1.2.0&logversion=2.0
{/tabs-pane}
{tabs-pane label="百度webapi"}
https://restapi.amap.com/v3/geocode/regeo?key=这里写key&location=117.19674%2C39.14784&extensions=all&s=rsx&platform=WXJS&https://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行®ion=北京&output=json&ak=这里写key
{/tabs-pane}
{tabs-pane label="百度webapiIOS版"}
https://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行®ion=北京&output=json&ak=这里写key=iPhone7%2C2&mcode=com.didapinche.taxi&os=12.5.6
{/tabs-pane}
{tabs-pane label="腾讯webapi"}
https://apis.map.qq.com/ws/place/v1/search?keyword=酒店&boundary=nearby(39.908491,116.374328,1000)&key=这里写key
{/tabs-pane}
拿我的key做示例:28aebc9c35a582467c153e012b0bb244,已知是高德的所以直接使用高德的接口来调用一下是否能返回数据
https://restapi.amap.com/v3/direction/walking?origin=116.434307,39.90909&destination=116.434446,39.90816&key=28aebc9c35a582467c153e012b0bb244
访问后成功返回数据
获取到的key不知道是哪个平台的就只能每个接口尝试一下了,如果是对应平台的key就可正常返回数据。也有特别的情况:对方做了防御,这个key只能由指定ip使用该服务
如果设置指定ip,获取到key后通过接口请求则会返回错误码
对应的错误码
这是高德的错误码对照表
https://lbs.amap.com/api/webservice/guide/tools/info