主要观点总结
本文主要介绍了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 传输的数据是经过了加密的,可以保证不被篡改; 项目后台采用安全的验证机制,比如采用 参数加密 和 请求时间限制 来防止参数篡改和二次投放( 我们以这种方式为案例进行讲解 )。 防止接口参数篡改 为了防止参数被抓包篡改参数,我们可以对参数进行加密。具体方式如下:
………………………………