fix: 加固链接/图标安全与版本一致性;sync-articles 对齐 best-effort

- 模板与运行时统一做 URL scheme 白名单校验(不安全降级为 #),并清洗 icon class;分类标题/新增分类改用 DOM API 避免 innerHTML 注入
- sync-articles 主入口异常不再返回非 0 退出码,避免阻断 build/deploy
- window.MeNav.version 改为从 meta menav-version/配置自动读取,避免写死版本
- 文档/配置:新增 security.allowedSchemes 配置说明
This commit is contained in:
rbetree
2026-01-04 18:18:57 +08:00
parent 4cc10dd2b2
commit 9929f60170
9 changed files with 288 additions and 88 deletions

View File

@@ -126,24 +126,29 @@ MeNav 配置系统采用“完全替换”策略(不合并),按以下优
faviconUrl: "https://example.com/favicon.png" # 单站点自定义 favicon
```
3. **字体**
3. **安全策略(链接白名单)**
- `security.allowedSchemes`:允许在页面中渲染为可点击链接的 URL scheme 白名单
- 默认仅允许:`http/https/mailto/tel` + 所有相对链接(`#`、`/`、`./`、`../`、`?` 开头)
- 其他 scheme 会被安全降级为 `#` 并输出告警;如需支持 `obsidian://`、`vscode://` 等协议,可在此显式放行
4. **字体**
- `fonts`:单一字体配置项,用于设置全站基础字体(`body` 等)
- 支持 `source: css | google | system`(分别表示第三方 CSS、Google Fonts、系统字体
- 可选 `fonts.preload: true`:用 `preload + onload` 的方式非阻塞加载外链字体 CSS更利于首屏性能
- 首页副标题(渐变发光样式)使用全站基础字体(跟随 `fonts` 配置)
4. **顶部欢迎信息与社交链接**
5. **顶部欢迎信息与社交链接**
- `profile`:首页顶部欢迎信息
- `social`:侧边栏底部社交链接
- `profile.title` / `profile.subtitle`:分别对应首页顶部主标题与副标题
5. **导航**
6. **导航**
- `navigation[]`:页面入口列表,`id` 需唯一,并与 `pages/<id>.yml` 对应(例如 `id: common` 对应 `pages/common.yml`
- 默认首页由 `navigation` 数组顺序决定:**第一项即为首页(默认打开页)**,不再使用 `active` 字段
- 图标使用 Font Awesome 类名字符串(例如 `fas fa-home`、`fab fa-github`
- 导航显示顺序与数组顺序一致,可通过调整数组顺序改变导航顺序
6. **RSSarticles Phase 2**
7. **RSSarticles Phase 2**
- `rss.*`:仅用于 `npm run sync-articles`(联网抓取 RSS/Atom 并写入缓存)
- `npm run build` 默认不联网;无缓存时 `articles` 页面会回退到 Phase 1 的站点入口展示
- articles 页面会按 `articles.yml` 的分类进行聚合展示:某分类下配置的来源站点,其文章会显示在该分类下
@@ -151,7 +156,7 @@ MeNav 配置系统采用“完全替换”策略(不合并),按以下优
- 默认配置已将 `rss.cacheDir` 设为 `dev`(仓库默认 gitignore避免误提交缓存文件可按需改为自定义目录
- GitHub Pages 部署工作流会在构建前自动执行 `npm run sync-articles`,并支持定时触发(默认每天 UTC 02:00可在 `.github/workflows/deploy.yml` 调整)
7. **GitHubprojects 热力图,可选)**
8. **GitHubprojects 热力图,可选)**
- `github.username`:你的 GitHub 用户名(用于 projects 页面标题栏右侧贡献热力图)
- `github.heatmapColor`:热力图主题色(不带 `#`,例如 `339af0`
- `github.cacheDir`projects 仓库元信息缓存目录(默认 `dev`,仓库默认 gitignore

View File

@@ -21,6 +21,19 @@ icons:
# 说明:如果你在中国大陆且访问 gstatic.com 较慢,建议设置为 cn 以提升图标加载速度
region: cn # 可选: com | cn默认 com
# 安全策略(可选):链接 URL scheme 白名单
# - 默认允许http/https/mailto/tel + 所有相对链接(# / ./ ../ ?
# - 其他 scheme 会在页面中安全降级为 # 并输出告警(避免 javascript: 等危险链接变成可点击)
# - 如需支持 obsidian://、vscode:// 等自定义协议,可在此显式放行
security:
allowedSchemes:
- http
- https
- mailto
- tel
# 示例:
# allowedSchemes: [http, https, mailto, tel, obsidian, vscode]
# 字体设置:全站基础字体
# - source: css | google | system
# - css: 通过 cssUrl 引入第三方字体 CSS