专栏名称: 架构师
架构师云集,三高架构(高可用、高性能、高稳定)、大数据、机器学习、Java架构、系统架构、大规模分布式架构、人工智能等的架构讨论交流,以及结合互联网技术的架构调整,大规模架构实战分享。欢迎有想法、乐于分享的架构师交流学习。
今天看啥  ›  专栏  ›  架构师

SpringBoot接口设计防篡改和防重放攻击

架构师  · 公众号  · 架构  · 2024-10-02 22:28
    

主要观点总结

本文主要介绍了API接口防篡改、防重放攻击的常见方案,包括参数加密、请求时间限制等,并详细描述了实现方法。

关键观点总结

关键观点1: API接口暴露问题

API接口提供给第三方服务调用,接口上提供了具体的请求地址和请求参数,接口可能被人抓包拦截并对请求参数进行修改后再次发起请求,可能导致信息被盗取或服务器受到攻击。

关键观点2: 防止接口参数篡改

前端使用约定好的秘钥对传输参数进行加密,得到签名值sign1,并将签名值存入headers后发送请求给服务端。服务端接收客户端的请求后,在过滤器中使用约定好的秘钥对请求的参数再次进行签名,得到签名值sign2,对比两者的值来判定是否为合法请求。

关键观点3: 防止接口重投放

基于timestamp对参数进行签名,每次http请求都加上timestamp时间戳和请求的参数一起进行数字签名。服务器收到请求后判断时间戳参数与当前时间是否超过设定时间(如60s),如果超过则提示签名过期,如果修改timestamp参数则sign参数对应的数字签名会失效。

关键观点4: 代码设计思路

主要是通过创建过滤器,对参数进行签名验证。过滤器代码包括初始化、doFilter(过滤)、响应错误信息等部分,并在yml配置文件中进行配置重放超时时间和不过滤的URI地址。


文章预览

架构师(JiaGouX) 我们都是架构师! 架构未来,你来不来? API 接口防篡改、防重放攻击常见方案。 API 接口暴露问题 由于提供给第三方服务调用的 API 接口需要暴露在外网中,并且接口上提供了具体的请求地址和请求参数,那么,接口就有可能 被人抓包拦截并对请求参数进行修改后再次发起请求 ,这样一来可能会被盗取信息,二来服务器可能会受到攻击。 为了防止这种情况发生,需要采取安全机制措施进行防范,方法有多种,比如: 接口采用 https 的传输方式,https 传输的数据是经过了加密的,可以保证不被篡改; 项目后台采用安全的验证机制,比如采用 参数加密 和 请求时间限制 来防止参数篡改和二次投放( 我们以这种方式为案例进行讲解 )。 防止接口参数篡改 为了防止参数被抓包篡改参数,我们可以对参数进行加密。具体方式如下: ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览