V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ihmily  ›  全部回复第 1 页 / 共 2 页
回复总数  32
1  2  
这博客看的好舒服,排版很棒,写的很用心,照片拍的好!
@hackerwgf

>哎,曾经很骄傲可以从一堆下载中找到真实的下载按钮

死去的回忆突然攻击我 :)
另外, 双 token 比单 Token 也有利于日志分析:

检测到 access_token 异常 → 可能是网络攻击
检测到 refresh_token 异常 → 可能是账户被盗


场景 A:Access Token 被重复使用, 重放攻击
时间线:
T0: 用户请求 GET /workflows ,Access Token 在网络中传输
T1: 攻击者在网络中拦截到这个 Access Token
T2: 攻击者立即用这个 Access Token 发起请求
T3: 15 分钟内,Access Token 仍然有效 → 攻击成功

# 日志中看到:
- 同一个 Access Token 来自不同 IP
- 同一个 Access Token 在短时间内高频使用
- User-Agent 不一致

影响范围: 相对局部(只影响当前 token 时间窗口)



# 场景 B:Refresh Token 被重复使用
时间线:
T0: 用户登录,得到 RT_1 ,存储在 localStorage
T1: 攻击者通过某种方式窃取了 RT_1 (钓鱼、数据库泄露、恶意软件等)
T2: 用户的浏览器自动刷新,用 RT_1 → 得到 RT_2 ,RT_1 进黑名单
T3: 攻击者尝试用 RT_1 刷新 → ❌ 触发第 133-135 行的检测


而如果是单 token ,则无法区分是哪种场景导致的黑名单 Token 被重复使用

单 Token 重复使用的多种可能性. 有可能是
1.并发刷新(正常行为)
用户打开页面,5 个 API 同时发起:
──────────────────────────────────────
T0: 5 个请求都带着过期的 token_v1
T1: 5 个请求都返回 401
T2: 5 个响应拦截器同时触发刷新
- 请求 1: POST /refresh { token: token_v1 } → 成功,返回 token_v2 ,token_v1 进黑名单
- 请求 2: POST /refresh { token: token_v1 } → ❌ 黑名单检测触发
- 请求 3-10: 同样被拒绝

2.多 Tab/多窗口(正常行为)
用户同时打开多个 Tab:
──────────────────────────────────────
Tab A: 用户正在浏览,token 刚好过期
Tab B: 用户也在操作,同一个 token 过期

Tab A 先刷新:
POST /refresh { token: token_v1 } → 成功,token_v1 进黑名单
localStorage.setItem('token', token_v2)

Tab B 延迟几秒刷新(还没来得及读取新 token ):
POST /refresh { token: token_v1 } → ❌ 黑名单检测触发

# 后端日志:
# 以上问题检测到 token_v1 被重复使用,但不能确定是不是网络攻击!


3.账户被盗(异常行为
真正的攻击场景:
──────────────────────────────────────
T0: 攻击者窃取了 token_v1
T1: 合法用户刷新:POST /refresh { token: token_v1 } → token_v2 ,token_v1 进黑名单
T2: 攻击者尝试刷新:POST /refresh { token: token_v1 } → ❌ 黑名单检测触发

# 后端日志:
# 检测到 token_v1 被重复使用
# 这次是真的攻击!
问题 1:

单 Token 方案:同一个 token 既用于访问又用于刷新

问题场景:
用户在 Tab A 刷新了 token ,得到 token_v2
用户在 Tab B 仍然持有 token_v1
Tab B 的请求会失败(因为 token_v1 已在黑名单),无法刷新
需要复杂的跨 Tab 同步机制


问题 2:
单 Access Token 的暴露场景:
每个 API 请求的 HTTP Header 中
浏览器开发者工具的 Network 面板
可能被记录在服务器日志中
可能通过中间代理服务器
如果有 XSS 漏洞,容易被窃取

假设你每天发送 1000 个请求 → Access Token 暴露了 1000 次,用作刷新 token 不安全


而双 token 中 Refresh Token 仅在以下情况使用:
✅ Access Token 过期时(比如每 8 小时一次)
✅ 只发送到特定的刷新接口
✅ 不会出现在普通业务请求中


虽然 Refresh Token 也有被窃取的风险,但是风险小很多
云 GPU 可以试试 Autodl: https://www.autodl.com/
12 月了,一年又见底了,大家都过得怎样呢?

2025: https://www.v2ex.com/t/1176131
2024: https://www.v2ex.com/t/1094197
2023: https://www.v2ex.com/t/996699

顺便回顾了一下往年帖子,算是每年的年终总结吗,我认为是很有意思的记录。
59 天前
回复了 userKamtao 创建的主题 生活 误入包养圈,陷入了人生的大思考。
这种人和事情太多了,只是我们生活中一般接触不到,对于正常人来说等于是误入圈子了。

大部分人刚接触到这种自己三观以外的人和事物后,通常都是会先感到震惊,然后引发对人和事的思考。
@cmdOptionKana

>我搜索了一下 comfyUI 美女图,没有找到特别好的作品,你们是在哪里看到 comfyUI 的优秀图片的?我想去看看

https://www.liblib.art/
139 天前
回复了 zhufpy 创建的主题 Solana 1000r,持 7000+$V2EX,成为了持币者
离谱 1000r 才 7000 了吗?当初我买的时候也是买了 1000r ,买了 45000+个$V2EX
@0x114514 #91

op 可能是偏理想主义,和我类似,两个人喜欢的话根本不会考虑这些问题,也不会去具体想这些问题。
199 天前
回复了 jochenshi 创建的主题 云计算 腾讯云的"同价续费"有隐藏条款
@jochenshi 是不是轻量云服务器?貌似续费的入口要找对,我也是去年买了,今年 4 月多准备续费的时候,一看居然要 700 多一年,然后找半天那个续费同价的入口,最终找到了入口,100 多续费成功。
@Yuesh1 这个不支持哈
2024-09-29 18:18:26 +08:00
回复了 perbugwei 创建的主题 职场话题 到底什么是奋斗
@JiHuGeek 可能有这么一种感觉 像 @QAQqingju 早上六点多出门 晚上 9 点多才能到家,会感觉自己一天都在公司,即使你身在曹营心在汉,中途可能会做自己的事 又或者单纯刷刷手机 摸摸鱼,但一天都是在公司度过的不是吗?每天如此往复,可能就会觉得自己一天都在工作上,时间长了内心很压抑很累吧?

如果是我的话,宁愿把中途摸鱼的时间 全身心投入工作,然后早 3 个小时下班(当然这不是我能决定的),这样才是完全自由的,即使回到家我还是会写代码,但是身处在家,无任何公司条例拘束,环境会让我很放松。
2024-08-24 14:32:41 +08:00
回复了 vicsino 创建的主题 分享创造 分享下新的 IP 查询工具站(支持 curl 和 json)ip138.xyz
收集的一些接口 : https://github.com/ihmily/ip-info-api
2024-07-27 18:41:55 +08:00
回复了 jlz52z 创建的主题 Vim 关于 vim 中一次复制粘贴的询问
#2 二楼正解

第一步打开文件 vim test.txt
第二步 :set paste (注意开头冒号)
第三步 按下 i 进入编辑模式
第四步 使用 shift + insert 组合键 粘贴

完成!
2024-05-25 19:43:20 +08:00
回复了 iMath 创建的主题 OpenAI 能用 NGINX 反向代理 OpenAI GPT 的网站 https://chatgpt.com/ 吗??
API 可以反代,WEB 没试过
2024-05-21 17:57:48 +08:00
回复了 zhangjiashu2023 创建的主题 创造者 个人开发一个网站,收款怎么解决
@zhangjiashu2023 #49 可以在原金额基础上加减 0.01 进行区分
1  2  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2659 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 48ms · UTC 09:17 · PVG 17:17 · LAX 01:17 · JFK 04:17
♥ Do have faith in what you're doing.