api接口是什么意思?api密钥是什么?提供api接口有什么风险吗?

7F662CE5E29 其它 1347

api接口是什么意思

api接口是什么意思?api接口英文全称为Application Programming Interface,中文的意思是应用程序接口,作用是为程序开发人员提供全面接口服务,快速调用接口,实现产品开发。

api接口
api接口一般分为多层接口,也就是为了连接其它程序而做的一种程序入口,大概分为硬件接口、用户界面(UI)、软件接口、面向对象接口,软件接口指的是不同软件系统之间而进行约定的一种接口,近年来互联网发展特别快,计算机软件市场规模也是越来越大了,通常需要把一个复杂的系统分成多个小程序,此时我们就需要使用API接口将多个小程序连接起来,所以API接口对于目前的软件开发技样还是非常重要的。

api密钥是什么?

api密钥可简单理解为进入房间的钥匙,是一种秘密令牌,与web服务请求一起提交以识别web服务请求的来源,api密钥也包含在web服务请求中,也是为了进一步验证web服务请求的来源,防篡改。
一般情况下,是可以正确识别web服务请求来源的,也会当成一种认证形式,也可以根据执行请求的人限制某些api的访问,通过api密钥判断数量过高的请求防止滥用。
一般来说api密钥还分为公钥和私钥,应用于某些非对称加密或相关数字签名,api密钥技术也称之为是一种安全的技术,明确api密钥请求来源,还可以防止受保护的内容受窥探。

api接口安全风险与防范

1、未授权访问

风险:当非法攻击者知道API接口地址和API传入参数后,就可以访问未被授权的数据。
防范:web前端页面调用后端接口时,则必须由后端做二次校验才行,系统与系统之间的API接口也必须要进行身份认证,例如appid和appSecret机制、token机制。

2、越权问题

风险:黑客攻击者会试图访问API权限以外的内容,进行水平越权或垂直越权的数据操作。
防范:
1)不信任API接口调用传入的参数,后端程序必须对访问权限做严格的控制,不能省略此步骤;
2)前端API接口调用后端API接口,后端API接口必须要做二次校验;
3)不能信任由前端API接口传入的权限及相关参数,也可以设置不要让前端传入与权限相关的参数,而是由后端自动获取当前登录用户的权限参数;
4)后端接口程序不仅要判断当前用户是否登录,还需要判断当前用户是否有登录权限;
5)要特别小心通示ID参数来查询或操作的场景,而且还需要校验当前登录用户是否有ID权限。

3、数据窃听

风险:API接口在调用数据过程中有可能会被不法分子窃听,比如恶意wifi、DNS劫持、网络设备被黑等。
防范:
1)尽量选择安全的网络传输环境,例如内网、专线网等;
2)选择HTTPS加密协议传输网络数据;
3)对传输的网络数据进行加密。

4、DDoS攻击

风险:黑客攻击者会非法控制一群肉鸡,再发起ddos攻击,导致网络接口被堵塞,从而导致此接口无法为之提供正常服务。
防范:
1)选择安装硬件网络防火墙;
2)使用流量清洗和黑洞技术;
3)设置IP白名单;
4)对接口调用频率及调用次数进行一定的限制。

5、资源耗尽攻击

风险:一般黑客攻击者会利用API接口漏洞耗尽服务器资源。
防范:
1)限制服务器上传文件大小及类型;
2)限制分页查询的最大记录数;
3)限制API接口调用频率和调用次数;
4)限制其它有可能耗尽服务端资源的行为。

6、重放攻击(Replay Attack)

风险:当黑客攻击获取一段数据后,就会多次重复请求API接口。
防范:
1)在API接口请求的数据信息中加入随机数和数字签名,如果随机数重复了则认为当前请求为无效,此方法的缺点是会占服务器较大的内存空间,因为需要存储维护一张随机数记录表;
2)在API接口请求的信息中加入时间戳和签名,如果API接口请求的信息中含有的时间戳与服务器端的时间相差较大,则认为当前请求为无效,此种方法最大缺点就是在于时间戳里的时间差,仍然有被重放攻击的风险;
3)只在允许的时间差内维护随机数记录表,例如随机数记录表时间有效期设置为一分钟,这样就可以节省很大的服务器内存空间;
4)我们还可以选择一次性token机制,token使用完以后就失效了。

7、注入攻击

风险:黑客攻击者向API接口中传入一些非法数据,使API接口执行出想不到的结果。
防范:
1)程序、数据分开存储,禁止API接口调用者控制执行程序;
2)使用预编译SQL,而不是动态拼接SQL;
3)在API接口入参对象中只放入一些必要参数,且在操作时也只修改一些必要的参数属性,防止黑客利用JSON字符串和Object自动绑定特性向API接口传入更多的JSON属性,来更新整个对象。

8、篡改数据

风险:黑客攻击者在获得一段数据报文后,接着就会篡改报文中的内容,再请求API接口。
防范:
1)使用API数字签名的方式来防止篡改数据;
2)客户端对API请求的报文内容进行签名,当服务器验证签名通过后,才会响应该条请求;
3)服务端对响应的报文内容进行签名,待客户端签名验证通过后,才会响应该报文内容;
4)API常用签名算法有SHA256或MD5,大兵推荐大家使用SHA256签名算法,此签名算法不可逆计算出原始值;
5)API报文内容签名需要同时考虑防止签名被预测和重放攻击风险,因此需要将nonce和timestamp一起签名,并且保证每次签名的sign值都不一样。

9、代码泄漏

风险:程序代码中含有敏感信息,当程序代码泄漏后,敏感信息也就被泄漏了。
防范:
1)建议不要在程序代码中存放secret等敏感信息,即使加密过也不行;
2)正确配置.gitignore,建议不要将无用的程序代码及配置文件放在服务器里,特别是前端代码程序;
3)程序代码中禁放一些与API密钥相关的内容;
4)程序代码中也不要放API URL内容;
5)防目程序代码被泄露到互联网上;
6)也不要在后端服务器受控配置中心存放敏感配置信息;

10、数据泄漏

风险:API接口返回了过多的报文数据,而且还包括一些敏感数据信息。
防范:
1)对于前端只返回有用的数据,也不要寄希望前端程序来隐藏数据;
2)后端程序对敏感数据进行脱敏,不要用前端数据进行脱敏。

11、API URL泄漏

风险:使用HTTP GET调用API报文数据时,API URL地址里是带有参数的,由于API URL是用明文进行传输的,所以API URL参数数据就有可能被窃取。
防范:
1)禁止在API URL地址中放敏感参数数据信息;
2)使用HTTP POST来传输数据,再使用HTTPS加密协议对数据传输过程进行加密。

12、服务端被黑

风险:虽然大多数风险都是发生面API接口数据传输过程中,但如果服务器端被黑客攻击了,也同样会影响客户端。
防范:
1)做好服务器端的安全防护工作,关闭一些无用的端口,设备服务器安全组,及时修补服务器漏洞及web程序漏洞;
2)客户端通过API接口返回的报文数据也需要进行校验,防止数据被黑客篡改了,黑客攻击者可以在服务端安装一个代理服务器来篡改API接口返回的报文数据。

黑客攻击者的常用攻击手段:

1)网络窃听;
2)抓包工具;
3)Chrome浏览器开发者工具;
4)编写Python程序进行重复请求API接口;
5)病毒木马程序。

API接口安全小结

1)API接口提供方不信任API接口调用方的参数请求,而API接口调用方也不信任API接口提供方所返回的数据;
2)如果API接口参数数据在网络传输过程中是不安全的,那么网络中每个传输节点都是不安全的;
3)使用HTTPS加密协议传输网络数据;
4)让黑客窃取的报文数据无法解密;
5)设置WAF防火墙、网络隔离区、IP白名单、流量清洗和黑洞技术来防上网络DDOS攻击;
6)简化API接口数据传输过程,使用API网关,在API网关上实现数据的安全传输入限流;
7)使用nonce和timestamp的API签名机制来防止数据被非法篡改和重放攻击;
8)关注水平越权或垂直越权问题;
9)注意程序代码安全,防止程序泄漏和API URL参数数据泄漏;

回复

我来回复
  • 暂无回复内容

联系我

平时工作忙:合作还是咨询SEO服务,请简明扼表明来意!谢谢!

在线咨询:点击这里给我发消息

邮件:dabingseo@qq.com
工作时间:周一至周六,10:30-24:30,节假日休息

个人微信
个人微信
分享本页
返回顶部