锁、台账,和渡轮上的阅读

2026年9月10日 devloggosecurity

锁、台账,和渡轮上的阅读

今天一起上线了三件小东西,都是那种让网站更结实而不是更闪亮的安静改动。

一把由你自己选择的锁。 账号现在可以开启两步登录:在密码之外,再加一个来自验证器应用的动态码。我想把理念说清楚,因为这对我很重要:这里永远不会为此烦你。没有横幅,没有"今天就保护你的账号!",没有强制开启。如果你从不打开安全设置那一页,你甚至不会知道这个功能存在。我给自己的管理员账号开了,因为那个账号什么都能做,开了才安心。对你来说,这完全是你自己的选择。

在安全设置里开启两步验证

开启的步骤:一个给验证器应用的密钥,然后输入一个动态码证明它能用。

生成动态码的部分我自己写了,没有引入库,因为在 TOTP 这个吓人的名字底下,藏着一个来自老 RFC 的小而漂亮的把戏:算一个 HMAC,然后让摘要的最后四个比特决定从哪里读出数字。它的整个核心:

mac := hmac.New(sha1.New, secret)
mac.Write(counterBytes[:])
sum := mac.Sum(nil)

// Dynamic truncation (RFC 4226 section 5.3).
offset := sum[len(sum)-1] & 0x0f
code := (uint32(sum[offset]&0x7f) << 24) |
	(uint32(sum[offset+1]) << 16) |
	(uint32(sum[offset+2]) << 8) |
	uint32(sum[offset+3])

还有恢复码,以及几条逃生通道,确保手机丢了绝不等于博客丢了。我把难看的路径测得最狠:同一个码用两次会被拒绝,烧掉的恢复码永远烧掉,从未开启的账号登录时和以前逐字节一致。

给语言记台账。 五种语言、将近五十篇文章,"我还缺哪篇翻译"正在变成记忆力测验。后台的语言页面现在把文章的整张表格也画出来了,缺失和过期的格子都有标记,从任何一个空格一键跳到对应的编辑器。

还有离线阅读。 网站现在可以安装了,打开过的文章断网也能读,在这一带多半意味着:在渡轮上。难的部分是看不见的,缓存的页面会相对错误的地址去找自己的资源,然后悄悄坏掉,这种问题只有真正关掉网络去看才会现形。所以我就真的关了网去看,现在它好了。

0 条评论

登录 后即可评论。

登录

忘记密码?

还没有账号?