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

164 天前
 bigbigeggs

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

© 2021 V2EX