业务安全之接口调用安全

       关于接口设计安全,主要需要考虑两个方面的安全问题,一是接口访问验证及权限问题,主要解决接口访问的合法性(用户登录验证、来源验证、频率控制等);另外是数据传输安全,主要解决接口数据被监听篡改和接口错误处理(HTTPS安全传输、敏感内容加密、数字签名等)。

一.接口调用重放攻击

     常见于短信/邮件&验证码接口、订单生成、评论提交等,需要对请求合法性校验,请求合法性校验主要就是指如何避免API被非法的调用。

     修复建议:

      1.对评论提交等操作采用验证码机制,防止生成数据业务被恶意调用;

      2.短信/邮件接口,需要对接调用频率进行控制或者上限限制;

      3.每一个订单(接口访问)使用唯一的token,提交一次后,token失效。

二.接口调用遍历漏洞

      Web接口一般将常见的一些功能需求进行封装,通过传入不同的参数来获取对应的数据或者执行相应的功能,其中最常见的场景就是通过接口传入id参数,返回对应id的信息。此类接口如请求合法性校验不严,很容易出现非授权访问或者越权访问的问题。

修复建议:

      1.在session中存储当前用户的凭证或者id,只有传入凭证或者id参数值与session中的一致才返回结果。

       一般涉及身份校验的接口,不要直接将敏感信息的明文信息在客户端与服务端之间传递,可以将敏感信息在服务端关联到用户标识 ID,在客户端保存用户标识 ID 并提交到服务端,服务端根据 ID 取出对应信息后进行校验;

三.接口调用参数篡改漏洞

       在短信、邮件调用业务环节中,例如短信验证码、邮件验证码。修改对应请求中手机号或邮箱地址参数提交后,如果修改后的手机号或邮箱收到系统发送的信息,则表示接口参数可被篡改。

修复建议:

      1.会话Session中存储重要的凭证,在忘记密码、重新发送验证码等业务中,从Session获取用户凭证而不是从客户请求的参数中获取;

      2.从客户端处获取手机号、邮箱等账号信息,要与Session中的凭证进行核验,验证通过后才允许进行业务操作。

四.接口未授权访问/调用漏洞

      在正常的业务中,敏感功能的接口需要对访问者的身份进行验证,验证通过后才允许调用接口进行操作。接口未做身份验证或身份校验不严,可能导致非授权访问或越权调用,越权又分为垂直越权和水平越权。

修复建议:

      1.采用Token校验的方式,在url中添加一个Token参数,只有Token验证通过才返回接口数据且Token使用一次后失效;

      2.在接口被调用时,服务器端对会话状态进行验证,如果已经登录,便返回接口数据;如未登录,则返回自定义的错误信息;

      3.未授权访问接口做Session认证,并对用户访问的每一个URL做身份鉴别,正确的校验用户id及token等;

      3.服务器端需校验身份唯一性,访问接口来源验证,不同身份只能查看修改删除添加自己的信息。

猜你喜欢

转载自blog.csdn.net/liushulin183/article/details/82391290