datasette PR #2689:使用 Sec-Fetch-Site 标头保护取代基于令牌的 CSRF

Simon Willison's Blog 工具

摘要

Datasette PR #2689 使用基于 Sec-Fetch-Site 标头的保护取代了基于令牌的 CSRF 保护,这一改进受 Go 1.25 和 Filippo Valsorda 研究的启发,通过消除对隐藏表单令牌的需求,简化了 CSRF 处理。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/04/20 08:27

# datasette PR #2689: 使用 Sec-Fetch-Site 标头保护替代基于令牌的 CSRF 来源:https://simonwillison.net/2026/Apr/14/replace-token-based-csrf/ 2026年4月14日 - 链接博客 **datasette PR #2689: 使用 Sec-Fetch-Site 标头保护替代基于令牌的 CSRF**(https://github.com/simonw/datasette/pull/2689)。Datasette 长期以来一直使用 CSRF 令牌来防御 CSRF 攻击,具体实现采用了我开发的 asgi-csrf(https://github.com/simonw/asgi-csrf)Python 库。这些令牌使用起来颇为麻烦——你需要在模板中散布带有 `{{ csrf_token() }}` 的行,然后针对那些供浏览器外部调用的 API 有选择地禁用 CSRF 保护。我一直密切关注 Filippo Valsorda 在此方面的研究,该研究在 2025 年 8 月的这篇详尽文章(https://words.filippo.io/csrf/)中有所描述,并于同月作为 Go 1.25 的一部分(https://tip.golang.org/doc/go1.25#nethttppkgnethttp)发布。我现在已经在 Datasette 中实现了同样的变更。以下是 PR 描述——Claude Code 完成了大部分工作(分布在 10 次提交中,在我密切指导下并由 GPT-5.4 交叉审查),但我决定开始手动编写这些 PR 描述,部分是为了让描述更简洁,同时也作为一种自我约束的练习。 > - 新的 CSRF 保护中间件,灵感来自 Go 1.25 以及 Filippo Valsorda 的这项研究(https://words.filippo.io/csrf/)。它取代了旧的基于 CSRF 令牌的保护机制。 > - 移除了模板中所有 `{{ csrf_token() }}` 的实例——它们不再需要。 > - 移除了在 `datasette/hookspecs.py` 中定义的 `def skip_csrf(datasette, scope):` 插件钩子及其文档和测试。 > - 更新了 CSRF 保护文档(https://docs.datasette.io/en/latest/internals.html#csrf-protection),以描述新方法。 > - 升级指南现在描述了 CSRF 变更(https://docs.datasette.io/en/latest/upgrade_guide.html#csrf-protection-is-now-header-based)。

相似文章

datasette 1.0a27

Simon Willison's Blog

Datasette 1.0a27 发布,主要包含重大安全改进(现代化 CSRF 标头)、新增 RenameTableEvent 以增强插件兼容性,以及多项 API 增强,包括改进的 upsert 处理和数据库锁定修复。

datasette 1.0a38

Simon Willison's Blog

Datasette 1.0a38 修复了一个 SQL 注入漏洞,该漏洞影响同时提供公共和私有表的实例,该修复也已移植到 Datasette 0.65.3。

datasette-auth-tokens 0.4a13

Simon Willison's Blog

datasette-auth-tokens 0.4a13 发布,这是 Simon Willison 为 Datasette 开发的一个认证令牌插件。

datasette-referrer-policy 0.1

Simon Willison's Blog

datasette-referrer-policy 0.1 发布,一个 Datasette 插件,通过覆盖默认的 no-referrer 头部来修复 OpenStreetMap 瓦片显示问题。

datasette-apps 0.1a2

Simon Willison's Blog

Datasette-apps 0.1a2 新增了应用 CSP 权限、改进了存储查询选择器并支持键盘导航,同时修复了链接弹窗和全屏模式的问题。