2023年7月31日发(作者:)
如何防⽌api接⼝被恶意调⽤或攻击⽆论⽹站,还是App⽬前基本都是基于api接⼝模式的开发,那么api的安全就尤为重要了。⽬前攻击最常见的就是“短信轰炸机”,由于短信接⼝验证是App,⽹站检验⽤户⼿机号最真实的途径,使⽤短信验证码在提供便利的同时,也成了呗恶意攻击的对象,那么如何才能防⽌被恶意调⽤呢?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,按照业务分不同token。6.采⽤https:线上的api接⼝开启https访问,这样做的话别⼈抓包的难度会提⾼很多,⽽且https需要秘钥交换,可以在⼀定程度上鉴别是否伪造IP。7.服务器端代理请求:针对于⽹站,这也是解决跨域的⽅案之⼀,采⽤服务器代理可以有效的防⽌接⼝真实地址的暴露。8.其它:当接⼝存在⼤量⾁鸡攻击的时候,攻击者也同样容易暴露意图,我们可以通过系统分析算法,让攻击者获取不到有效数据,提⾼攻击成本。总结:安全问题⼀直都是与攻击者之间智⽃勇的问题,没有⼀劳永逸的解决⽅法,只有不断交锋,不断成长
2023年7月31日发(作者:)
如何防⽌api接⼝被恶意调⽤或攻击⽆论⽹站,还是App⽬前基本都是基于api接⼝模式的开发,那么api的安全就尤为重要了。⽬前攻击最常见的就是“短信轰炸机”,由于短信接⼝验证是App,⽹站检验⽤户⼿机号最真实的途径,使⽤短信验证码在提供便利的同时,也成了呗恶意攻击的对象,那么如何才能防⽌被恶意调⽤呢?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,按照业务分不同token。6.采⽤https:线上的api接⼝开启https访问,这样做的话别⼈抓包的难度会提⾼很多,⽽且https需要秘钥交换,可以在⼀定程度上鉴别是否伪造IP。7.服务器端代理请求:针对于⽹站,这也是解决跨域的⽅案之⼀,采⽤服务器代理可以有效的防⽌接⼝真实地址的暴露。8.其它:当接⼝存在⼤量⾁鸡攻击的时候,攻击者也同样容易暴露意图,我们可以通过系统分析算法,让攻击者获取不到有效数据,提⾼攻击成本。总结:安全问题⼀直都是与攻击者之间智⽃勇的问题,没有⼀劳永逸的解决⽅法,只有不断交锋,不断成长
发布评论