使用第三方接口如何保证key不被其他人恶意使用?

个人调用第三方节接口,暴露key了

在使用第三方接口时通常会在该网站注册用户,同时给你返回一个key供调用接口时使用。
通常请求第三方接口时使用的是ajax,请求该第三方接口要求携带注册的key,那么问题来了,其他用户通过开发者工具查看我前端源码时看到了ajax请求接口时携带的key,对方不就能使用我这个key无限制的向第三方接口发请求了吗?特别是收费的api时,损失更大。

所以个人使用第三方接口时如何防止被恶意用户使用key?
如果你自己作为第三方接口平台时如何防止注册用户的key被恶意用户使用?

以聚合api为例说明

接口地址:http://apis.juhe.cn/springTravel/citys?key=
名称必填类型说明
keystring在个人中心->我的数据,接口名称上方查看
如果使用ajax进行接口请求时不就暴露了这个key吗?被恶意用户使用该怎么办?
另外如果你自己在开发第三方api平台时,如何防止用户的key被别的恶意用户滥用呢?
阅读 8.3k
9 个回答

这个请求应该在你服务器上发的,你key存在服务器上

同意 @冯恒智 的回答
这种调用第三方api的安全性问题,RFC6749 早就定义好了,没什么好争议的。
前端的任何key都跟接口安全无关。建议可以了解下OAuth2.0。

这种明文的key一般情况下会有加密解密的配套吧, 就算第三方没有,你们也完全可以自己接入一些加密解密的方案,只要别人不知道你们的加密方式 ,他们就无法成功使用的。

还有更多大神的解答吗?求帮忙解释下!

不至于不至于,一般来说,还会要求你调用api的时候,加上即时生成的签名字符串和随机数,通常会给你一个秘钥,你通过key和秘钥来即时生成签名,服务商根据你提供的这些数据,根据算法,验算签名是否正确,正确,就确认调用请求合法。

直接传随机的token 作为秘钥呀这是 key干嘛用的 在token里面去传 设置个有效期

抛开具体的api不谈,只要掌握一个大原则,所有重要的key token等等都不应该直接暴露在前端代码里,而是通过后端代理一层返回数据给前端,前端拿到直接用就可以了

印象里高德地图和百度地图的免费接口确实是随便部署就可以使用的,在一定请求量以下是不收费的,也没有要求你预存费用,如果产生费用的话估计你是有申诉的余地的,但是多了这一步总归要麻烦一些,中间可能还会被断供一段时间。
好在你能免费申请的,别人也能申请,没必要薅你的羊毛,除非能把你打进班房,但是到坐牢这一层面的取证会谨慎得多,别人搞不好把自己弄进去了。
对于收费的接口,供应商的正确做法是让你提供域名白名单。
不管是申诉机制、法律途径,还是供应商方案,都不是从你这一侧出发就能解决的。
要想从你这一侧解决问题的话可能,可能只有楼上提出的方案——让后端转发。

最好走自己服务器请求转发

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进