SpringBoot接口 - API接口有哪些不安全的因素?如何对接口进行签名?

奇安信常见安全漏洞及修复 奇安信常见安全漏洞问题及修复 阅读详情

在以SpringBoot开发后台API接口时,会存在哪些接口不安全的因素呢?通常如何去解决的呢?本文主要介绍API 接口有不安全的因素 以及 常见的保证接口安全的方式 ,重点 实践如何对接口进行签名 。

  • SpringBoot接口 - API接口有哪些不安全的因素?如何对接口进行签名?

准备知识点

建议从接口整体的安全体系角度来理解,比如存在哪些不安全的因素,加密解密等知识点。

API接口有哪些不安全的因素?

这里从体系角度,简单列举一些不安全的因素:

  • 开发者访问开放接口

    • 是不是一个合法的开发者?
  • 多客户端访问接口

    • 是不是一个合法的客户端?
  • 用户访问接口

    • 是不是一个合法的用户?
    • 有没有权限访问接口?
  • 接口传输

    • http明文传输数据?
  • 其它方面

    • 接口重放,上文介绍的接口幂等
    • 接口超时,加timestamp控制?
    • ...

常见的保证接口安全的方式?

针对上述接口存在的不安全因素,这里向你展示一些典型的保障接口安全的方式。

AccessKey&SecretKey

这种设计一般用在开发接口的安全,以确保是一个 合法的开发者 。

  • AccessKey: 开发者唯一标识
  • SecretKey: 开发者密钥

以阿里云相关产品为例

认证和授权

从两个视角去看

  • 第一: 认证和授权 ,认证是访问者的合法性,授权是访问者的权限分级;
  • 第二: 其中认证包括 对客户端的认证 以及 对用户的认证 ;
  • 对于客户端的认证

典型的是AppKey&AppSecret,或者ClientId&ClientSecret等

比如oauth2协议的client cridential模式

https://api.xxxx.com/token?grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

grant_type参数等于client_credentials表示client credentials方式,client_id是客户端id,client_secret是客户端密钥。

返回token后,通过token访问其它接口。

  • 对于用户的认证和授权

比如oauth2协议的授权码模式(authorization code)和密码模式(resource owner password credentials)

https://api.xxxx.com/token?grant_type=password&username=USERNAME&password=PASSWORD&client_id=CLIENT_ID&scope=read

grant_type参数等于password表示密码方式,client_id是客户端id,username是用户名,password是密码。

(PS:password模式只有在授权码模式(authorization code)不可用时才会采用,这里只是举个例子而已)

可选参数scope表示申请的权限范围。(相关开发框架可以参考spring security, Apache Shiro,SA-Token等)

https

从接口传输安全的角度,防止接口数据明文传输, 具体可以看这里

HTTP 有以下安全性问题:

  • 使用明文进行通信,内容可能会被窃听;
  • 不验证通信方的身份,通信方的身份有可能遭遇伪装;
  • 无法证明报文的完整性,报文有可能遭篡改。

HTTPs 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPs 使用了隧道进行通信。

通过使用 SSL,HTTPs 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

SpringBoot 如何保证接口安全?老鸟们都是这么玩的! 因为一次正常的HTTP请求,从发出到达服务器一般都不会超过60s,所以服务器收到HTTP请求之后,首先判断时间戳参数与当前时间比较,是否超过了60s,如果超过了则认为是非法请求。这种方案nonce和timestamp参数都作为签名的一部分传到后端,基于timestamp方案可以让黑客只能在60s内进行重放攻击,加上nonce随机数以后可以保证接口只能被调用一次,可以很好的解决重放攻击问题。我们知道http 是一种无状态的协议,服务端并不知道客户端发送的请求是否合法,也并不知道请求中的参数是否正确。 阅读详情

相关推荐

避开这些坑!Matlab+Python+CoolProp混合编程的5个实战经验

本文分享了Matlab与Python结合CoolProp进行混合编程的5个实战经验,涵盖环境配置、数据类型转换、错误诊断、性能优化及备选方案。特别针对CoolProp在热力学计算中的常见问题,提供了详细的解决方案和优化技巧,帮助开发者高效避开技术陷阱。

weixin_33734785的博客 512

SpringBoot API接口签名(防篡改)

本文介绍了基于Spring AOP的API签名校验机制,用于保障接口安全性。核心组件包括:1) 配置签名的@ApiSignature注解;2) 实现验证逻辑的ApiSignatureAspect切面;3) 处理防重放的Redis存储组件。该机制通过验证请求参数完整性、时效性(时间戳)和唯一性(nonce),并比对客户端与服务端签名来防止篡改和重放攻击。实现流程包括:请求拦截、参数验证、签名计算和Redis防重放处理,其中签名采用SHA256算法。整体设计采用注解配置方式,支持自定义超时时间和参数名称,具有较

小钟不想敲代码 1347

springboot项目接口加密

现在的项目都采用前后端分类的方式开发了,前后端的通讯方式都通过API进行传输。我们知道,如果是管理后台的开发,可以通过shiro或springSecurity进行权限控制,进而保证API接口的安全性,但是,当我们在进行APP或小程序开发的时候,因为需要用户长期登录等问题,再采用shiro等方式进行安全控制就显得不是那么合理的。 可是,如何让我们的API接口变得安全点?不至于当其他人通过抓包的方式拿...

Crayon 4838

SpringBoot第20讲:SpringBoot如何对接口进行签名

以阿里云相关产品为例一般开放平台采用这一套典型的是AppKey&AppSecret,或者ClientId & ClientSecret等比如oauth2协议的client cridential模式 grant_type参数等于client_credentials表示client credentials方式,client_id是客户端id,client_secret是客户端密钥。返回token后,通过token访问其它接口。比如oauth2协议的授权码模式(authorization code) 和密码模式

Jet_qi的博客 683

Spring Boot实现API接口签名验证:保障接口安全性的完整指南

API接口安全与签名验证实现摘要 本文系统介绍了API接口安全机制,重点阐述了签名验证技术的实现方案。主要内容包括: API安全概述:分析了API安全威胁(如OWASP API Top 10风险),强调签名验证对防止请求伪造、数据篡改等攻击的关键作用。 签名算法设计:对比MD5、SHA等常见算法,推荐HMAC-SHA256方案;详细说明签名参数设计(AppID、Nonce等)和防重放攻击机制(时间戳验证、请求计数等)。 Spring Boot实现:提供项目初始化依赖配置,展示签名工具类核心代码,包括参数过滤

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1127

AD9361跳频系统优化:Fast Lock功能实战配置指南(含Profile寄存器详解)

本文详细解析了AD9361跳频系统中Fast Lock功能的实战配置方法,包括Profile寄存器的深度解析与优化策略。通过预校准和快速调用机制,显著提升频率切换速度至7-15微秒,适用于TDD跳频系统。文章还提供了查找表选择、硬件控制优化和性能验证的实用指南,帮助开发者解决实际工程中的常见问题。

weixin_33725722的博客 209

HT7533与1117稳压芯片动态特性对比:实测分析与优化策略

本文深入对比了HT7533与1117稳压芯片的动态特性,包括电压过冲和瞬态响应能力,并提供了实测数据与优化策略。HT7533适合低功耗设备,而1117在大电流和稳定性要求高的场景表现更优。文章还分享了PCB布局和电容选择的实用建议,帮助工程师根据项目需求选择合适的稳压芯片。

weixin_28454475的博客 615

STM32CubeMX-电机控制2-电机相关配置部分

STM32CubeMX-电机霍尔传感器 写在前面的话:之前一直使用库函数,调程序时总会觉得是配置出现问题,要画一些时间去检查配置程序,所以目前转到了STM32CubeMX。写这些内容一方面是整理记录,因为是刚入门,所以难免出现错误,希望能得到大家指正;另一方面是因为自己一个人调试,走了很多弯路,写下来希望能给相同处境的人一些参考。 步骤一: 电机霍尔传感器接口 我目前使用的是STM32F4,电机的...

niker_co的博客 1万+

ESD笔记(三)_常用ESD保护电路优缺点

根据ESD防护器件的TLP I-V特性我们可将ESD器件分为回滞类和非回滞类两种; 回滞类的ESD器件包括NPN三极管、栅极接地 NMOS ( GGNMOS, Gate-grounded NMOS )、可控桂(SCR, siliconcontrolled rectifier)等。 非回滞类的ESD器件包括二极管、二极管串、沟道工作的MOS管、PNP三极管、栅极接电源的PMOS(GDPMOS)等,与回滞类ESD器件相比,其TLP曲线没有负阻区的存在。 常用于ESD防护的器件包括PN结二极管、GGN

weixin_47139649的博客 1万+

从“Hello World”到区域赛银牌:我的ACM算法打怪升级全记录(附各阶段工具包)

本文记录了作者从编程新手到ACM区域赛银牌获得者的完整学习历程,详细分享了各阶段的算法学习路线、刷题策略和实战经验。涵盖从基础算法到动态规划的系统训练方法,并附赠经过竞赛检验的工具包和资源清单,为算法竞赛爱好者提供实用参考。

weixin_29201859的博客 124

ESP32学习,驱动LED点阵屏,SD卡播放GIF动图

搬运就可以实现效果,如果有不足,请批评指正。下步该学一下如何文章上视频了,老是截图不方便展示效果。

u011625956的博客 1868

Windows 11 下 WSL 离线安装 Ubuntu 22.04 保姆级教程(国内镜像加速版)

本文提供了一份针对中国地区用户的Windows 11下WSL离线安装Ubuntu 22.04的详细教程。通过使用国内镜像源加速下载安装包,并配合PowerShell命令完成部署,有效解决了官方商店下载缓慢的问题。教程涵盖环境准备、离线包获取、安装初始化及安装后的关键优化配置,帮助用户快速搭建高效的Linux开发环境。

weixin_28452161的博客 1378

MediaCreationToolW11:Windows11系统升级与修复利器

在日常使用Windows11系统的过程中,我们可能会遇到一些棘手的问题,比如系统更新时出现异常导致无法成功更新,或者系统本身出现异常需要进行无损修复。此外,当我们的电脑尚未升级到Windows11,而我们又希望进行升级时,一款高效且可靠的工具就显得尤为重要。接下来,MediaCreationToolW11将开始下载Windows11的安装文件,并创建Windows11介质。在“选择你要执行的操作”界面中,选择“ISO文件”。此时,你可以使用你的账户登录系统,并开始使用全新的Windows11系统了。

nntxthml的博客 2410

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 一文搞懂MySQL架构设计,再也不用担心面试官问得太深
下一篇: SpringBoot接口 - 如何优雅的对参数进行校验?
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值