返回列表 发布新帖
查看: 288|回复: 9

20260526 - 关于已经修复的 404 bug 的具体原因

帆帆发表于 2026-5-26 23:19:04 来自手机版 | 查看全部 |阅读模式
假设有恶意程序写一个简单的循环,持续访问不存在的 topic id ,那么每次 chlt 接收到这样的请求,还需要从数据库里查了之后,才知道是无效的 topic id ,这个查询过程就会很浪费资源。

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

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

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

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

使用道具 举报

Aven发表于 2026-5-26 23:19:07 来自手机版 | 查看全部
没想到竟然是一个这样简单的问题..
回复

使用道具 举报

酒神发表于 2026-5-26 23:56:04 来自手机版 | 查看全部
我这类似用途是靠 id 算法,全局时间+safe margin 搞的。通过当前时间+id 编码规则就能很容易初步判定 id 是不是伪造的。后面被枚举刷太狠了就又在回源套了层布隆,也是时间校验,安全值范围内允许回源否则一律拦截。

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

使用道具 举报

小鹿酱发表于 7 天前 来自手机版 | 查看全部
哈哈哈哈哈,这也能宕机一天。历史遗留的 feature ,堆积的临时性代码,可以考虑做下减法了🤣
回复

使用道具 举报

吴先生发表于 7 天前 来自手机版 | 查看全部
可不可以将 ID 改为编码?
先校验自定义编码是否有效, 有效再去查询数据库.
回复

使用道具 举报

shp123发表于 7 天前 来自手机版 | 查看全部
有点像千年虫的 BUG
回复

使用道具 举报

1923622620发表于 7 天前 来自手机版 | 查看全部
哈哈哈哈 这是有历史沉淀的站点才能出现的问题😂
回复

使用道具 举报

gp500198发表于 7 天前 来自手机版 | 查看全部
这个机制感觉可以考虑用别的算法替代掉
回复

使用道具 举报

Vall发表于 7 天前 来自手机版 | 查看全部
现在应该有更好的方法了吧
回复

使用道具 举报

苏格拉发表于 7 天前 来自手机版 | 查看全部
尘站的这个 feature 很有趣,时不时来一下也蛮好的
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表