关于接口设计安全,主要需要考虑两个方面的安全问题,一是接口访问验证及权限问题,主要解决接口访问的合法性(用户登录验证、来源验证、频率控制等);另外是数据传输安全,主要解决接口数据被监听篡改和接口错误处理(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.服务器端需校验身份唯一性,访问接口来源验证,不同身份只能查看修改删除添加自己的信息。

业务安全之接口调用安全相关推荐

  1. java 异常补偿解决_第三方接口调用异常补偿机制实现实例记录

    背景: 我们的组件(简称A),在业务链中属于数据支撑节点.其中与组件B存在接口同步数据的直接关系(API接口直接调用进行数据交互) 问题: 我们的上游有另一个组件C(带有界面),调用A(us)进行数据 ...

  2. 实现API接口调用--来源阿里云大学-归档

    # API的概念和基本实现 P.S.这篇文章的价值在于做了视频内容的复练,不用再盯着视频过一遍 from:来自阿里云大学的免费学习课程,实现API接口调用 时间戳:2020年8月21日11:00:15 ...

  3. lua web快速开发指南(7) - 高效的接口调用 - httpc库

    httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header.args.bod ...

  4. 支付宝支付之“单笔转账到支付宝账户接口”的调用(生成签名、上传应用公钥、下载SDK、接口调用、报错自动排查、查看错误码)

    支付宝接口调用 "单笔转账到支付宝账户"的接口调用,一般涉及到下面几个知识点 1.生成签名 在使用支付宝接口的时候,需要使用支付宝的签名,这里需要使用支付宝的RSA生成工具. 关于 ...

  5. 国际短信平台接口调用的方法步骤,简单5步快速教程

    如果您需要使用国际短信平台来满足您的业务需求,那么您需要了解短信平台接口调用的方法步骤. 接口调用是指您的应用程序通过网络接口与短信平台进行通信,从而实现向全世界发送短信的功能. 下面是国际短信平台接 ...

  6. 打造个人版微信小程序(1)——本地开发api接口调用

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢.   从今天开始,开始打造一个个人版的微信小程序,尽早上线,方便大家使用以及技术讨论.这套小程序包括前台.后台.数据库 ...

  7. 手把手教你搭建SpringCloud项目(九)集成OpenFeign服务接口调用

    Spring Cloud全集文章目录: 零.什么是微服务?一看就会系列! 一.手把手教你搭建SpringCloud项目(一)图文详解,傻瓜式操作 二.手把手教你搭建SpringCloud项目(二)生产 ...

  8. ajax 泛微oa表单js_接口调用示例

    ## **业务保存类接口格式说明** #### 接口协议主要采用http(s),因此下面从请求头,请求体,响应体方面做出说明 * **请求头格式** |请求头标识|必填|内容|备注| | --- | ...

  9. 一行代码搞定Dubbo接口调用

    本文来自网易云社区 作者:吕彦峰 在工作中我们经常遇到关于接口测试的问题,无论是对于QA同学还是开发同学都会有远程接口调用的需求.针对这种问题我研发了一个工具包,专门用于远程Dubbo调用,下面就让我 ...

  10. 交通银行网上支付接口调用测试实例

    公司最近有一个网站商城项目要开始开发了,这几天老板和几个同事一起开着需求会议, 讨论了接下来的业务规划和需求策略,等技术需求一下来还要讨论技术需求, 确认后再慢慢的进入开发阶段,趁着闲暇时间新造的人想 ...

最新文章

  1. pta 7-6 根据后序和中序遍历输出先序遍历 (25 分)
  2. 中的count函数_关于计数的5个函数都不掌握,那就真的Out了!
  3. Elasticsearch Javascript API增删改查
  4. mysql自然连接和等值连接_mysql sql99语法 内连接等值连接
  5. linux 卸载 rtx,Ubuntu20.04系统卸载软件及清理系统垃圾缓存以及新力得
  6. CentOS7.6安装Nodejs(Npm)
  7. [BUUCTF-pwn]——ez_pz_hackover_2016
  8. 《剑指offer》构建乘积数组
  9. html页面显示动态日期时间,如何在网页中动态显示当前日期和时间(js调用)
  10. java8 时间加一秒_好好讲讲关于Java中的时间处理
  11. 电脑关机同步服务器信息失败,电脑同步,更新时间失败,怎么处理?
  12. 正确理解文件与目录的可读、可写、可执行权限
  13. c语言中calc用法,CSS中calc()函数怎么使用
  14. 指南:清晰理解zkEVM、EVM 兼容性和Rollup
  15. mysql evict_善用MySQL AHI加速神器,让你的InnoDB查询飞起来!
  16. 用python绘制熊猫图案_python – 有没有办法在ggplot中绘制一个熊猫系列?
  17. JSTL【一】C标签的使用
  18. 目标检测网络之三叉戟TridentNet
  19. 搭建自己的以图搜图系统(二):深入优化搭建生产级别的图搜系统
  20. 听红楼 第十八回 隔珠帘父女勉忠勤 搦湘管姊弟裁题咏

热门文章

  1. HTML中的音视频标签
  2. 荣耀8微信总是无法连接服务器,微信无法登陆想要登陆的王者荣耀账号,怎么办?...
  3. matlab 12脉波变压器,12脉波整流电路MATLAB-Simulink仿真及谐波分析
  4. asp.net中gridview的绑定数据源实现增删改查
  5. java aspect调用,在Spring 中使用@Aspect 控制自定义注解的操作
  6. 青岛大学的计算机专业考研分数线,青岛大学考研分数线
  7. 幽暗镰刀:隐私安全下的收割者们
  8. 给别的计算机硬盘装系统,在一台计算机上装好系统的硬盘移到另一个电脑能用吗?...
  9. ROS学习:launch文件编写
  10. 廉颇老矣?尚能饭否?64岁的Python之父被微软录取!