当前位置: 首页 > 科技观察

网络安全——如何防范常见API漏洞

时间:2023-03-17 21:13:19 科技观察

随着互联网的全面发展,API这个词频频出现在大家的视线中。什么是API?API的全称是ApplicationProgrammingInterface,译为“应用程序编程接口”,是一些预先定义好的接口(如函数、HTTP接口),或者是指软件系统不同组件之间的约定。一组例程,应用程序和开发人员可以基于某个软件或硬件访问这些例程,而无需访问源代码或了解内部工作细节。今天,API已经成为绑定当前APP经济的粘合剂。在Web2.0浪潮到来之前,开放API甚至源代码主要体现在桌面应用中。越来越多的Web应用程序向开发人员开放API。同时它也正在成为黑客的头号目标。API的操作与URL的操作大致相同。当用户使用网络搜索时,页面显示结果是动态的。以手机银行应用程序为例,API也以类似的方式运行。它可以获取用户的地理位置、姓名、账号和账户余额,并相应地填充交互页面中的字段,但由于该API包含所有安全检查并且通常直接与后端服务通信,因此攻击者也更容易赞成。应用程序安全性一直存在问题:输入验证。如果没有适当的功能和安全测试,API可能成为完美的攻击点。因为API受到应用程序的信任,所以高速、海量的数据交换成为可能。在对应用安全市场的大量客户进行调研并参考开放Web应用安全项目(OWASP)后,调查人员总结出以下三类最常见的API漏洞:1.资产管理不当该API缺陷是环境隔离和管理不充分的结果,使攻击者可以访问不够安全的API端点。在以往的网络安全事件中,都存在此类漏洞,因为开发者API无需编辑即可访问生产数据,进而暴露了客户的系统。它还包括不监控开发API中的敏感数据,以及让已弃用的API仍然在线或公开。二:BrokenObjectLevelAuthorizationBrokenObjectLevelAuthorization(BOLA)BOLA通俗的定义是对象访问请求的验证不充分,允许攻击者通过重用访问令牌进行未授权的操作。Peloton事件是最近许多BOLA攻击的一个众所周知的例子。攻击者可以查看几乎所有用户的个人数据,包括标记为私人的事件。此类攻击会影响从开发到运营再到营销和公共关系的每个业务组。第三:无效的用户认证这类漏洞的准确定义是“认证机制的实现缺陷”,允许攻击者冒充合法用户。这里有两种常见的漏洞利用类型:第一种是由自动机器人执行的凭据填充。查找具有用户身份验证缺陷的API是自动攻击的理想目标。此漏洞的更复杂用途是进行侦察以确定API的工作方式。例如,如果我们输入“a@a.com/”密码的用户名/密码组合,应用程序显示“密码无效”,那么攻击者就知道用户名是有效的。攻击者将使用此数据点来增加撞库(或其他类型的攻击)成功的机会。API缺陷影响整个企业,而不仅仅是运维团队、安全团队或业务团队。指指点点永远无法解决问题,解决之道始于协作。那么如何防止API接口被恶意调用或攻击呢?1.图形验证码:将图形验证码与手机验证码绑定。用户输入手机号码后,只有用户输入图形验证码成功后,才能触发短信验证。这样可以有效防止恶意攻击。目前大多数应用程序都使用这种方法。2、限制请求次数:在服务器端限制同一IP地址、同一设备、同一时间范围内的接口请求次数。例如,重复发送同一个号码的时间间隔一般为60秒或120秒;设置每个IP每天最大发送量;设置单个手机号码每天最大发送量。3.限制流程条件:将短信验证放在最后,例如用户必须注册,或者用户必须填写一定的条件才能进行短信验证。4、归属地是否相同:服务器检查用户IP地址与手机号归属地是否匹配,不匹配提示用户手动操作。5、服务端接口验证:当用户登录成功后,返回一个Token签名生成的秘钥信息(Token可以使用base64编码和md5加密,可以放在请求的header中),然后进行Token认证为后续的每个请求生成包,服务器端校验是否一致来判断请求是否通过。(1)常规方式:用户登录后,生成一个token返回给客户端,然后服务端使用AOP拦截controller方法来验证token的合法性,每次token都是一样的;(2)用户登录后,生成一个临时的token,保存到服务器,返回给客户端,客户端下次请求时将这个token传给服务器,验证token是否有效,如果有效有效,则登录成功,并生成新的token返回给客户端,以便客户端在下一个请求中再次请求发回判断,并重复。这种方法存在性能问题,但也存在漏洞。如果用户在一次请求后,在发出下一次请求前被黑客截取登录,进行了假登录,同样可以登录成功,强制用户下线。但是这种方法大大降低了被造假的几率。(3)两层token:一般第一次用账号密码登录服务器,会返回两层token。您将需要重新登录。当然如果比较复杂,也可以做一个三层的token,根据业务划分不同的token。6.使用https:在线api接口启用https访问,这样别人抓包会困难很多,而且https需要密钥交换,可以识别是否是不是真人的假网络IP地址在某种程度上。7、服务器端代理请求:对于网站来说,这也是跨域的解决方案之一。使用服务器端代理可以有效防止接口真实地址的暴露。网络安全非常重要,近年来API安全事件层出不穷。因此,无论您是企业用户还是个人用户,都必须了解API存在的漏洞及相关风险,才能最及时做好安全防护!