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:
@@ -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. **RSS(articles Phase 2)**
|
||||
7. **RSS(articles 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. **GitHub(projects 热力图,可选)**
|
||||
8. **GitHub(projects 热力图,可选)**
|
||||
- `github.username`:你的 GitHub 用户名(用于 projects 页面标题栏右侧贡献热力图)
|
||||
- `github.heatmapColor`:热力图主题色(不带 `#`,例如 `339af0`)
|
||||
- `github.cacheDir`:projects 仓库元信息缓存目录(默认 `dev`,仓库默认 gitignore)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user