关于接口设计安全,主要需要考虑两个方面的安全问题,一是接口访问验证及权限问题,主要解决接口访问的合法性(用户登录验证、来源验证、频率控制等);另外是数据传输安全,主要解决接口数据被监听篡改和接口错误处理(HTTPS安全传输、敏感内容加密、数字签名等)。
一.接口调用重放攻击
常见于短信/邮件&验证码接口、订单生成、评论提交等,需要对请求合法性校验,请求合法性校验主要就是指如何避免API被非法的调用。
修复建议:
1.对评论提交等操作采用验证码机制,防止生成数据业务被恶意调用;
2.短信/邮件接口,需要对接调用频率进行控制或者上限限制;
3.每一个订单(接口访问)使用唯一的token,提交一次后,token失效。
二.接口调用遍历漏洞
Web接口一般将常见的一些功能需求进行封装,通过传入不同的参数来获取对应的数据或者执行相应的功能,其中最常见的场景就是通过接口传入id参数,返回对应id的信息。此类接口如请求合法性校验不严,很容易出现非授权访问或者越权访问的问题。
修复建议:
1.在session中存储当前用户的凭证或者id,只有传入凭证或者id参数值与session中的一致才返回结果。
一般涉及身份校验的接口,不要直接将敏感信息的明文信息在客户端与服务端之间传递,可以将敏感信息在服务端关联到用