惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
G
Google Developers Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Engineering at Meta
Engineering at Meta
B
Blog
博客园_首页
量子位
博客园 - 叶小钗
L
LangChain Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
F
Fortinet All Blogs
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
D
DataBreaches.Net
雷峰网
雷峰网
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
TaoSecurity Blog
TaoSecurity Blog
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
The GitHub Blog
The GitHub Blog
I
Intezer
H
Help Net Security
The Hacker News
The Hacker News
The Register - Security
The Register - Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
AWS News Blog
AWS News Blog
V
V2EX
Microsoft Security Blog
Microsoft Security Blog
T
Tenable Blog
Spread Privacy
Spread Privacy
A
Arctic Wolf
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
Schneier on Security
Schneier on Security
C
CERT Recently Published Vulnerability Notes
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Last Watchdog
The Last Watchdog
Latest news
Latest news
T
Troy Hunt's Blog
L
LINUX DO - 热门话题

站点状态

20260526 - 大于某个 ID 的主题全部出现 404 跳转的问题 - V2EX 20260203 - 基于 GPT 模型的图片生成功能 - V2EX 20260128 - 节点管理的新选项:新主题通知 20260123 - NodeBlocklist - V2EX 20260113 - 查看自己创建的节点的流量统计 / 创建更多节点 / 节点侧边栏管理 / Topic Boost - V2EX 20260111 - 节点友情链接 - V2EX 20260110 - /node/create - V2EX 20250815 - 忽略节点设置现在已经对 /recent 生效 20250722 - Solana 打赏功能更新 1 - V2EX 20250721 - Solana 原生代币 SOL 打赏 - V2EX 20250713 - Solana 登录和注册支持已经部署并开启 - V2EX 20250620 - 2FA 开启和关闭时的邮件提醒 - V2EX 20250619 - 10 分钟左右的停服维护 - V2EX 20250618 - OTP 输入有时候会失效的问题似乎是修好了 20241230 - vLLM + Qwen2.5-Coder-32B-Instruct 驱动的新的标签系统 - V2EX 20240505 - 邀请码系统 - V2EX 20230514 - 关于主题分页 502 问题的进一步进展 - V2EX 20230509 - 关于部分用户在访问需要翻页的主题时遇到的 502 问题 - V2EX 20230224 - 正在修复队列系统的一个问题 - V2EX 20211208 - 大约持续了 3 个小时的头像上传问题 - V2EX 20211208 - 创建新主题时的草稿问题 - V2EX 20211201 - 在回复列表的用户名旁增加了楼主(OP)标注 - V2EX 20211003 - 修复了由于 webfont 引起的页面显示延迟 - V2EX 20211002 - 修复了记事本编辑框的自适应高度问题 - V2EX 20211001 - 新功能 - 最近访问过的主题 - V2EX 20200310 - 大约持续了 12 分钟的一个故障 - V2EX 20191019 - 关于 Light Mode 的样式问题 - V2EX 20190828 - 关于北京时间 8 月 28 日早上 10:30 到 10:45 大约持续了 15 分钟的服务不稳定的原因 - V2EX 20190715 - 关于广告代码的问题 - V2EX 20190706 - 关于最近基础架构方面的一些变动 - V2EX 20190701 - 关于 CST 时间 2019 年 7 月 1 日 / PT 时间 2019 年 6 月 30 日的服务问题 - V2EX 20180422 - 关于最近(2018 年 4 月初到中旬)未读提醒数字不正确的问题 - V2EX 20171016 - 对登录冷却系统的改进 - V2EX 20170930 - 重要提示 - V2EX 在 2017 年 9 月 30 日正在遭遇一个密码碰撞攻击 - V2EX 20170921 - 访问问题说明 - V2EX 20170830 - DDoS 攻击造成的间歇性超时 - V2EX 20170303 - 关于大约持续了 16 个小时的登录问题 - V2EX 20170206 - 更新了头像图片的 CDN 地址 - V2EX 20170110 - Anti Spam 新策略的 bug 导致刚注册的用户无法发帖 - V2EX 20170102 - 22:15-22:50 之间的翻页问题 - V2EX 20161216 - 广东电信用户及根域名访问看到 Access Denied - V2EX 20161203 - captive.v2ex.co 证书过期问题 - V2EX 20160901 - V2EX Origin 网络问题 - V2EX 20160609 - 中国电信路由问题 - V2EX 20160318 - 邮件发送问题,已经修复 - V2EX 20160110 - 海外访问问题 - V2EX 20150615 - 联通访问问题 - V2EX
20260526 - 关于已经修复的 404 bug 的具体原因 - V2EX
Livid · 2026-05-26 · via 站点状态

假设有恶意程序写一个简单的循环,持续访问不存在的 topic id ,那么每次 V2EX 接收到这样的请求,还需要从数据库里查了之后,才知道是无效的 topic id ,这个查询过程就会很浪费资源。

所以程序中有这样的一种机制,如果 topic id 明显大于某个值,那么就不用查任何数据库资源,直接返回 404 。

这个值应该是被定期更新并且加上一个足够大的安全值。

但是由于最近测试服里的一个 bug ,导致这个值自从测试服上线之后,就一直没有被正确更新。因此当 topic id 持续增长,终于来到旧值 + 安全值的边界时,所有新的 topic id 就都 404 跳转了。

这个问题的根源是测试服上更新全站统计数据进 Memcached Key 时的 bug ,这个 bug 现在已经修复(测试服在这个地方现在使用了单独的 Memcached Key )。

povsister

3

povsister      5 月 26 日

我这类似用途是靠 id 算法,全局时间+safe margin 搞的。通过当前时间+id 编码规则就能很容易初步判定 id 是不是伪造的。后面被枚举刷太狠了就又在回源套了层布隆,也是时间校验,安全值范围内允许回源否则一律拦截。

最开始考虑过全局通过有状态存储维护这个上限,但组件太多依赖一个单点就很麻烦。

Pipecraft

4

Pipecraft      5 月 26 日

那现在已经公开秘密了,这个机制似乎不能防止恶意程序了。

ByteRan

5

ByteRan      5 月 26 日

有点像千年虫的 BUG

Livid

8

Livid      5 月 26 日

@Pipecraft 很可能这个机制现在也是不需要的。

一些这样的逻辑都是当年应对某些恶意访问时写的。

然后年复一年这样的逻辑堆太多,本身也是一种问题。

itechify

9

itechify      5 月 26 日

哈哈哈哈哈,这也能宕机一天。历史遗留的 feature ,堆积的临时性代码,可以考虑做下减法了🤣

tty0

10

tty0      5 月 26 日

可不可以将 ID 改为编码?
先校验自定义编码是否有效, 有效再去查询数据库.

JoeJoeJoe

11

JoeJoeJoe      5 月 26 日 via iPhone

哈哈哈哈 这是有历史沉淀的站点才能出现的问题😂

Tink

12

Tink      5 月 26 日

这个机制感觉可以考虑用别的算法替代掉

GeorgeV

13

GeorgeV      5 月 26 日   ❤️ 1

v 站的这个 feature 很有趣,时不时来一下也蛮好的

CEBBCAT

15

CEBBCAT      5 月 27 日

> 假设有恶意程序写一个简单的循环,持续访问不存在的 topic id
似乎是缓存穿透,如果是恶意请求,那就是 CC 攻击?

听起来似乎是判定逻辑直接使用了缓存中存储的 topic count 作为 max id ?也许可以在新发帖时主动向 Cache 推送 max id ,记得使用 CAS 原子操作

BTW Livid 你最后一段似乎语序有些模糊,是这个 bug 让你措手不及吗?注意休息

ryd994

16

ryd994      5 月 27 日 via Android

@CEBBCAT #15 不用 CAS ,因为这个值不需要太精确。加个安全余量即可。同一时间生成的新帖 ID 应该差不了多少。

tf2

17

tf2      5 月 27 日   ❤️ 1

这个 idea 其实很好。不过可以做得细致一点

故意设置一些不存在的但是红线主题 id

谁访问,封谁的 IP

diudiuu

18

diudiuu      5 月 27 日

挺好的这个想法
现在换个算法,可能以前的数据就难受了,最后全是补丁

yougg

19

yougg      5 月 27 日

可以通过 ULID 或者 UUID v7 判断时间戳

ovtfkw

20

ovtfkw      5 月 27 日

缓存穿透吗,但是现在的主题 id 都是线性增加的,很容易被猜到把,那直接恶意大量访问已经存在的主题呢

8888888888

21

8888888888      5 月 27 日

开始还以为是在治理那些中转站或者疑似广告贴,后来发现新帖全 404

yelog

22

yelog      5 月 27 日

这个场景感觉使用缓存比较好,max_topic_id 在新增帖子的更新一下缓存。查询帖子判断大于这个 max_topic_id 就 404 。

keyfunc

23

keyfunc      5 月 27 日

可以对 ID 额外增加校验位,校验失败就不去查数据库了。

rrubick

24

rrubick      5 月 27 日 via iPhone

但是,有的帖子当时是有新增回复的,也就是有人是可以打开的,这又是为啥?

dudu2017

26

dudu2017      5 月 27 日

昨晚用 chat 分析了一下,也定位到是数据库响应问题

leekoho

27

leekoho      5 月 27 日

@dudu2017 V2EX 源码开源了吗? 你这咋能通过 chat 去定位... 而且不是说不是数据库响应的问题吗,是程序设计导致的,是我理解错了吗

CEBBCAT

28

CEBBCAT      5 月 27 日 via iPhone

@ryd994 make sense ,想的是既然存了就维护好这个数据,不然以后如果复用没注意到竟态可能会造成别的问题,但如果存的时候写明白,应该也行

InDom

30

InDom      5 月 27 日

@rrubick #24 也打不开, 读 404 但可以写, 所以直接 post 即可.

还有一些是通过 api 查看的, api 没有这个检查所以不会 404.

mywaiting

31

mywaiting      5 月 27 日   ❤️ 1

从我过去的维护经验来说,最好把基础定义 API 和反垃圾 AntiSpam 的实现分离比较好

一来可以保证 AntiSpam 不会影响基础 API 运行,二来方便在 AntiSpam 执行各种试验

大概过程如下:

所有流量从 gateway 进入到 webapp 后会有系列分离/分流机制推送到 AntiSpam 离线检测,检测后会自动标识 IP/User/Fingerprint 等标识的风险值,然后反馈到 webapp gateway 自动拉黑/喂假数据

举个例子:正常访问的流量都会访问 /favicon.ico 这个请求进入 gateway 后会推送到 AntiSpam 离线检测后会适当降低当前访问 IP 的风险值

dode

34

dode      5 月 29 日

所有还是搞一个位运算服务吧,查询性能更好

dode

35

dode      5 月 29 日

redis ID 自增 读取和查询性能怎么样