开放API网关实践(二) —— 重放攻击及防御

如何设计实现一个轻量的开放API网关之重放攻击及防御

文章地址: https://blog.piaoruiqing.com/blog/2019/08/11/开放api网关实践之重放攻击及防御/

前言

上一篇文章(开放API网关实践(一)中的接口设计提到timestampnonce两个参数的作用是用来防重放. 本文就重放攻击及其防御进行探讨. 先抛出两个问题:

  • 什么是重放攻击
  • 如何防御重放攻击

什么是重放攻击(Replay Attacks)

什么是重放, 先举个例子:

打开浏览器的调试工具并访问一个网站, 在网络工具中找到一个请求并右键选择Replay. 如图:

replay-xhr-

上述的重放操作是接口调试中比较常用的手段, 这种操作可以让我们跳过认证信息的生成过程, 直接重复发起多次有效的请求.

重放攻击是一种黑客常用的攻击手段, 又称重播攻击回放攻击, 是指攻击者发送目的主机已接收过的数据, 以达到欺骗系统的目的, 主要用于身份认证过程, 破坏认证的正确性.

举个易懂的例子:

  • 服务端提供了打款接口, 用户A向服务端请求发起一次打款5元的操作(附带了签名并进行了加密), 服务端接收到了数据并正确打款给用户B.
  • 但这个请求被黑客拦截到(可能就是用户B干的 ( ̄▽ ̄)"), 黑客将请求原封不动地向服务器发送, 服务器多次错误地打款给用户B. (当然, 这些都是是建立在服务端的付款没做幂等等防范措施、安全级别较低的前提下)
  • 尽管A发起的请求有签名和加密, 但B无需破解这个数据, 只是将同样的数据重复发给服务器就能达到欺骗的目的.

replay-attacks

模拟重放攻击

实验器材

序号 名称 数量 备注
1 服务器x2 1 Mac: 10.33.30.101 - 真实服务器
Windows: 10.33.30.100 - 伪造服务器
2 域名 1 replay-test.piaoruiqing.com (10.33.30.101)
3 DNS服务器 1 用来模拟DNS劫持

实验步骤

  1. 启动服务器, 请求接口并收到响应数据.
  2. 劫持DNS(在路由器中修改DNS服务器地址模拟劫持), 并拦截请求数据.
  3. 向服务器重复发送拦截到的数据(重放攻击).

过程记录

准备工作

DNS配置, 将域名replay-test.piaoruiqing.com指向内网中服务器的IP. 并启动服务器.

dns-conf

正常请求

使用postman发起一个正常的请求, 其中签名已在Pre-request-script中生成.

before-pre

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值