受保护文章示例
这是一个带密码保护的文章示例
受保护文章示例
背景
这是一篇受密码保护的文章示例。只有知道密码的读者才能访问此内容。
核心原理
密码保护通过 Cloudflare Worker 在边缘层实现:
- 请求拦截: Cloudflare Worker 拦截所有对受保护文章的请求
- Cookie 验证: 检查用户是否已通过密码验证(通过 Cookie)
- 密码验证: 如果未验证,显示密码输入页面
- 内容代理: 验证通过后,从 GitHub Pages 代理原始内容
配置说明
1. 文章标记
在文章的 front matter 中添加 password: true:
1
2
3
4
5
---
title: 我的文章
description: 文章描述
password: true # 启用密码保护
---
2. Cloudflare Worker 配置
在 Cloudflare Dashboard 中配置环境变量:
变量名: PASSWORD_HASHES 值: JSON 格式的路径-哈希映射
1
2
3
{
"/posts/protected-post-example/": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"
}
3. 生成密码哈希
使用提供的工具生成密码哈希:
1
2
3
4
5
# 激活虚拟环境
source venv/bin/activate
# 生成哈希
python tools/generate_password_hash.py yourpassword
安全说明
- 密码在客户端通过 SHA256 哈希后传输,不会明文传输
- 验证通过后,通过 HttpOnly Cookie 保持登录状态
- 静态文件仍然托管在 GitHub Pages,直接访问 GitHub 域名可以绕过保护
- 此方案适合轻度保护,不适合高安全要求的敏感内容
总结
通过 Cloudflare Worker + 密码哈希的方式,可以方便地为 Jekyll 静态博客添加文章级别的密码保护功能。
This post is licensed under CC BY 4.0 by the author.