使用第三方接口如何保证key不被其他人恶意使用?
个人调用第三方节接口,暴露key了
在使用第三方接口时通常会在该网站注册用户,同时给你返回一个key供调用接口时使用。
通常请求第三方接口时使用的是ajax,请求该第三方接口要求携带注册的key,那么问题来了,其他用户通过开发者工具查看我前端源码时看到了ajax请求接口时携带的key,对方不就能使用我这个key无限制的向第三方接口发请求了吗?特别是收费的api时,损失更大。
所以个人使用第三方接口时如何防止被恶意用户使用key?
如果你自己作为第三方接口平台时如何防止注册用户的key被恶意用户使用?
以聚合api为例说明
接口地址:http://apis.juhe.cn/springTravel/citys?key=
名称 | 必填 | 类型 | 说明 |
---|---|---|---|
key | 是 | string | 在个人中心->我的数据,接口名称上方查看 |
如果使用ajax进行接口请求时不就暴露了这个key吗?被恶意用户使用该怎么办?
另外如果你自己在开发第三方api平台时,如何防止用户的key被别的恶意用户滥用呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
不至于不至于,一般来说,还会要求你调用api的时候,加上即时生成的签名字符串和随机数,通常会给你一个秘钥,你通过key和秘钥来即时生成签名,服务商根据你提供的这些数据,根据算法,验算签名是否正确,正确,就确认调用请求合法。
直接传随机的token 作为秘钥呀这是 key干嘛用的 在token里面去传 设置个有效期
抛开具体的api不谈,只要掌握一个大原则,所有重要的key token等等都不应该直接暴露在前端代码里,而是通过后端代理一层返回数据给前端,前端拿到直接用就可以了
印象里高德地图和百度地图的免费接口确实是随便部署就可以使用的,在一定请求量以下是不收费的,也没有要求你预存费用,如果产生费用的话估计你是有申诉的余地的,但是多了这一步总归要麻烦一些,中间可能还会被断供一段时间。
好在你能免费申请的,别人也能申请,没必要薅你的羊毛,除非能把你打进班房,但是到坐牢这一层面的取证会谨慎得多,别人搞不好把自己弄进去了。
对于收费的接口,供应商的正确做法是让你提供域名白名单。
不管是申诉机制、法律途径,还是供应商方案,都不是从你这一侧出发就能解决的。
要想从你这一侧解决问题的话可能,可能只有楼上提出的方案——让后端转发。
最好走自己服务器请求转发
这个请求应该在你服务器上发的,你key存在服务器上
同意 @冯恒智 的回答
这种调用第三方api的安全性问题,RFC6749 早就定义好了,没什么好争议的。
前端的任何key都跟接口安全无关。建议可以了解下OAuth2.0。
这种明文的key一般情况下会有加密解密的配套吧, 就算第三方没有,你们也完全可以自己接入一些加密解密的方案,只要别人不知道你们的加密方式 ,他们就无法成功使用的。
还有更多大神的解答吗?求帮忙解释下!