接口防重放 是不是存粹的脱了裤子放屁?

2024-06-10 15:24:29 +08:00
 bigbigeggs

防重放解决的是攻击者拿到 url 和参数之后,不断地请求服务端。

  1. 服务端针对下单,支付,转账这种操作肯定有幂等,肯定不能胡来乱来

  2. 放重放生成一个 token ,这个 token 人人都知道如何生成的,比如 timestap+参数 用 md5 进行加密,攻击者也可以完全模拟这个 token 的生成规则,来绕过服务端

  3. 像 https ,客户端私钥加签服务端公验证,都是解决过程中的安全,放重放解决“客户端”的安全,感觉完全没必要,反而增加了成本

上周面试被问到,感觉存粹为了面试而面试,包括 sync ,lock ,多线程等,工作中根本用不到,完全不问业务上的问题,上来就啪啪的八股文走起。

为了面试由此写了一篇接口放重放的文章,欢迎大家指正,真感觉多次一举,为了面试而面试。

我真不相信,哪一家,真的在项目中写了防重放的实现逻辑。

12971 次点击
所在节点    Web Dev
94 条回复
yuhaofe
2024-06-10 15:40:05 +08:00
重点是看防谁、防什么吧,不就是你文章里说的增加攻击人的成本吗,看你想不想防比如我这种看到个接口就想调试下的脚本 boy😂,可能看到麻烦点就放弃了
zjp
2024-06-10 15:43:00 +08:00
云服务的接口都有防重放
没有可以实现幂等的地方,只能在请求参数上防止重复请求
porjac233
2024-06-10 15:52:41 +08:00
你出门好会锁门吗? 你知道开锁师傅开个锁仅需几分钟吗? 锁门是不是脱裤子放屁?
安全不绝对,所以安全措施就没必要存在?
什么 2B 结论?
kran
2024-06-10 16:53:42 +08:00
甚至不知道哪家会不防请求重放
whusnoopy
2024-06-10 17:08:46 +08:00
我司写了

一是出于本能的安全防御
二是服务部署在平台方的私有云上,平台方的安全团队会时不时重放 URL 请求来做安全监测
MMM25O7lf09iR4ic
2024-06-10 17:30:07 +08:00
这是很常见的方案,你的最后一行疑问才是比较离谱的,没用过的话见也应该见过不少,特征为 timestamp+nonce 。
IvanLi127
2024-06-10 20:12:05 +08:00
不是拿不到 url 和参数的时候,把抓的包拿去重放吗?你开头是不是直接错了
forvvvv123
2024-06-10 20:31:20 +08:00
楼上正解,防止重放一般是考虑攻击者拿到了正常用户的流量,仿冒正常用户去请求的这种场景;
cJ8SxGOWRH0LSelC
2024-06-10 20:47:24 +08:00
只要不是个人随便玩玩的项目, 接口防重放是必须做的, 参数加签都是标配的。 但凡对接过其他公司的 API 都不会有这样的疑问。
LeeReamond
2024-06-10 20:51:34 +08:00
说了半天感觉不对。我感觉问题可能是现在传输层都用 tls 保护了,是否还有必要实现业务防重放
ysc3839
2024-06-10 20:57:24 +08:00
按我个人理解,重放攻击属于中间人攻击,防重放攻击防不了客户端攻击,而 HTTPS 本身已经有防重放攻击的能力了,所以不需要自己特意去防重放攻击。你文章里提到的情况,实际不是重放攻击,而是“非官方客户端”,攻击者尝试绕过你的客户端逻辑,直接请求接口。
LeeReamond
2024-06-10 21:00:49 +08:00
还有一个问题是,例如 select 类操作,实现幂等很容易。新添加数据,加入幂等也不难。但是例如 A 给 B 转账这种操作能实现幂等吗?
me1onsoda
2024-06-10 21:02:08 +08:00
@zjp 能做防重放肯定能做幂等,防重放某种意义上也可以叫幂等吧
Aloento
2024-06-10 21:06:29 +08:00
安全不绝对 = 绝对不安全!
wind1986
2024-06-10 21:21:32 +08:00
包括 sync ,lock ,多线程等,工作中根本用不到
想问问工作几年了, 怎么会这些用不到
cJ8SxGOWRH0LSelC
2024-06-10 21:23:20 +08:00
@wind1986 #15 我估计他都没说完, 事务,分布式锁我估计他也用不到🐶
xmumiffy
2024-06-10 21:25:29 +08:00
是,大部分人要的不是防重放,而是 1. 防爬虫 2. 限频
akira
2024-06-10 21:47:31 +08:00
啊? 重放最主要不是要解决用户手抖的问题么。。其他的都是顺带的呀
zjp
2024-06-10 22:52:26 +08:00
@me1onsoda 说得不严谨,业务逻辑部分的幂等,不是请求的整体
angeni
2024-06-10 22:59:52 +08:00
这种面试其实看的是你的下限,不是上限。

个人感觉八股文其实是软件发展的一个脉络,应该懂但是不要照本宣科


最后你的那句 `防重放用处不大` 是完全错误的,每个注入点都是血的教训我举个场景

验证码重放可以遍历用户弱口令,短信发送重放可以刷接口或者做短信轰 X 炸

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1048255

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX