惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
T
Threatpost
P
Palo Alto Networks Blog
NISL@THU
NISL@THU
O
OpenAI News
Project Zero
Project Zero
G
GRAHAM CLULEY
P
Privacy International News Feed
A
Arctic Wolf
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
D
Docker
aimingoo的专栏
aimingoo的专栏
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
W
WeLiveSecurity
P
Proofpoint News Feed
腾讯CDC
Cloudbric
Cloudbric
S
Secure Thoughts
C
Check Point Blog
博客园 - Franky
T
The Exploit Database - CXSecurity.com
T
Troy Hunt's Blog
GbyAI
GbyAI
Security Archives - TechRepublic
Security Archives - TechRepublic
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
TaoSecurity Blog
TaoSecurity Blog
L
Lohrmann on Cybersecurity
V
Visual Studio Blog
F
Fortinet All Blogs
博客园 - 叶小钗
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
C
Cisco Blogs
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research

Halo - 强大易用的开源建站工具 | 应用市场 | 版本发布

应用版本:代码增强(高亮+折叠+长图折叠) 1.1.2 应用版本:代码增强(高亮+折叠+长图折叠) 1.1.1 应用版本:Kaze 1.4.9 应用版本:域名主题路由 1.0.0-beta1 应用版本:代码增强(高亮+折叠+长图折叠) 1.1.0 应用版本:API 扩展包 3.1.5 应用版本:页面转换器 1.0.4 应用版本:Higan Haozi 1.69.3 应用版本:Clarity 1.6.2 应用版本:代码增强(高亮+折叠+长图折叠) 1.0.0 应用版本:Serenity-Grace 2.0.3 应用版本:云盘链接下载 v1.2.0 应用版本:Higan Haozi 1.69.2 应用版本:应用市场 1.17.0 应用版本:Fuwari v2.1.0 应用版本:Serenity-Grace 2.0.2 应用版本:Serenity-Grace 2.0.1 应用版本:Cartly 商城主题 1.2.0 应用版本:氢·简 1.0.0-beta1 应用版本:Clarity v1.6.1 应用版本:AstraHub 星链 2.4.5 应用版本:编辑器超链接卡片 1.9.2 应用版本:AstraHub 星链 2.4.0 应用版本:文章组件 v1.0.1 应用版本:文章组件 v1.0.0 应用版本:Higan Haozi 1.69.1 应用版本:Dream2.0 Plus 1.18.1 应用版本:Dream2.0 Plus 1.18.0 应用版本:SEO 工具集 1.9.3 应用版本:Dream2.0 Plus 1.17.2 应用版本:Dream2.0 Plus 1.17.1 应用版本:Clarity v1.6.0 应用版本:Dream2.0 Plus 1.17.1 应用版本:Tools工具箱插件 2.3.1 应用版本:微言-即时通讯插件 微言-即时通讯插件 V1.4.0 应用版本:轻言 v1.2.3 应用版本:AstraHub 星链 2.3.0 应用版本:Floating Particles Floating Particles-1.0.9 应用版本:Floating Particles Floating Particles-1.0.8 应用版本:Shiki 代码高亮 1.3.2 应用版本:业余无线电 QSL卡片管理系统 v2.3.13 应用版本:Higan Haozi 1.69.0 应用版本:Floating Particles Floating Particles-1.0.5 应用版本:Floating Particles Floating Particles-1.0.4 应用版本:Higan Haozi 1.68.2 应用版本:Floating Particles Floating Particles-1.0.3 应用版本:业余无线电 QSL卡片管理系统 v2.3.12 应用版本:Floating Particles Floating Particles1.0.2 应用版本:业余无线电 QSL卡片管理系统 v2.3.11 应用版本:Higan Haozi 1.68.1 应用版本:Serenity-Grace 2.0.0 应用版本:Sky Blog 2 v1.2.3 应用版本:Higan Haozi 1.68.0 应用版本:业余无线电 QSL卡片管理系统 v2.3.10 应用版本:AstraHub 星链 2.2.9 应用版本:Sky Blog Theme v2.2.23 应用版本:Huohuo Weather Glass 1.0.26 应用版本:业余无线电 QSL卡片管理系统 v2.3.9 应用版本:Huohuo Weather Glass Huohuo Weather Glass V1.0.25 应用版本:链接管理 2.2.0 应用版本:业余无线电 QSL卡片管理系统 v2.3.8 应用版本:业余无线电 QSL卡片管理系统 v2.3.7 应用版本:业余无线电 QSL卡片管理系统 v2.3.6 应用版本:业余无线电 QSL卡片管理系统 v2.3.5 应用版本:业余无线电 QSL卡片管理系统 v2.3.1 应用版本:Sky Blog 3(macOS) v0.9.40 应用版本:Sky Blog 3(macOS) v0.9.39 应用版本:Docsme 文档管理 1.7.0 应用版本:Huohuo Weather Glass Huohuo Weather Glass 应用版本:Log Viewer 1.2.1 应用版本:业余无线电 QSL卡片管理系统 v2.3.0 应用版本:评论组件 3.1.2 应用版本:Steam 信息展示 v0.4.0 应用版本:BLOC积木 重构!全新出发! 应用版本:Vahlok v1.0.1 应用版本:AstraHub 星链 v2.2.0 应用版本:Sky Blog 3(macOS) v0.9.38 应用版本:AstraHub 星链 v2.1.5 应用版本:Vahlok v1.0.0 应用版本:微浸主题 微浸主题V1.5.1 应用版本:业余无线电 QSL卡片管理系统 v2.2.5 应用版本:业余无线电 QSL卡片管理系统 v2.2.4 应用版本:Higan Haozi 1.67.0 应用版本:EchoCraft产品官网主题 EchoCraft产品官网主题V1.3.1 应用版本:AstraHub 星链 v2.1.0 应用版本:业余无线电 QSL卡片管理系统 v2.2.3 应用版本:业余无线电 QSL卡片管理系统 v2.2.2 应用版本:业余无线电 QSL卡片管理系统 v2.2.1 应用版本:Dream2.0 Plus 1.17.0 应用版本:链接管理 2.1.0 应用版本:序白 · ALBA [Ecco视窗] v1.2.0 现已发布! 应用版本:链接管理 2.1.0-beta.5 应用版本:Higan Haozi 1.66.11 应用版本:Higan Haozi 1.66.10 应用版本:链接管理 2.1.0-beta.4 应用版本:链接管理 2.1.0-beta.3 应用版本:Higan Haozi 1.66.9 应用版本:Higan Haozi 1.66.8 应用版本:页面转换器 1.0.3 应用版本:API 扩展包 3.1.4
应用版本:保险箱插件 1.0.0
2026-06-22 · via Halo - 强大易用的开源建站工具 | 应用市场 | 版本发布

保险箱插件

保险箱插件为 Halo 站点提供基于规则和密码的资源访问保护。命中规则后,访客会先进入解锁页,密码验证通过后插件写入带有效期的 HttpOnly Cookie,并自动跳回原资源。

交流群

点击链接加入群聊【halo博客-lywq插件】

功能

  • 控制台规则管理:创建、编辑、启停、删除保险箱规则,支持按关键词、启用状态和保护对象筛选。
  • 多类型保护对象:支持附件路径、指定前台路由、整站私密三类保护范围。
  • 路径模式匹配:支持精确路径、父路径覆盖子路径,以及 ***? 通配符。
  • 命中预览:输入 URL 或路径后,按后端实际逻辑展示候选规则、最终命中规则、优先级和匹配精确度。
  • 附件列表集成:在 Halo 附件列表操作菜单中可以直接为有固定访问地址的附件新增保险箱规则。
  • 公开解锁流程:受保护资源统一跳转到固定解锁页,主题可覆盖页面模板。
  • 权限控制:控制台规则查看和管理分别由 plugin:safebox:rule:viewplugin:safebox:rule:manage 控制;公开解锁接口自动授权匿名访问。

保护对象

类型 适用场景 说明
附件 ATTACHMENT 私密图片、PDF、压缩包等上传文件 只保护 /upload 下的资源。
指定路由 ROUTE 会员页、下载页、活动页等前台路径 保护命中的前台路由,不影响 Halo 管理后台和插件接口。
整站私密 SITE 临时闭站、内部站点、密码访问站点 默认按 /** 匹配,可通过排除路径放行部分页面。

插件内置排除以下路径,避免把后台、接口、登录页和静态资源锁死:

/safebox/**
/apis/**
/console/**
/uc/**
/login
/logout
/oauth2/**
/actuator/**
/plugins/**
/themes/**
/assets/**

规则字段

字段 说明
规则名称 控制台展示名称,也是解锁页默认标题来源。
规则说明 解锁页说明文案;为空时使用默认提示。
保护对象类型 ATTACHMENTROUTESITE 三选一。
保护路径 一行一个路径模式,也支持用逗号分隔。建议填写以 / 开头的 pathname,不要填写完整 URL。
排除路径 命中这些路径时直接放行,常用于整站私密下放开公开页面。
访问密码 创建时必填;更新时留空表示保留原密码。密码以加盐 SHA-256 哈希保存。
优先级 数字越大越先匹配。相同优先级下,路径越具体越先匹配。
解锁有效期 单位秒,最小 60 秒,默认 3600 秒。
启用状态 停用后该规则不参与命中。

匹配规则

插件会从启用规则中选择最终命中的一条规则:

  1. 先按保护对象类型过滤,例如附件规则只处理 /upload 下的资源。
  2. 再排除内置路径和规则自身的排除路径。
  3. 匹配保护路径;不包含通配符的路径会同时覆盖其子路径,例如 /docs 会命中 /docs/a.pdf
  4. 候选规则按 priority 倒序排列。
  5. priority 相同时,路径匹配越具体越优先。

访问行为:

  • GETHEAD 请求命中规则且未解锁时,会以 303 See Other 跳转到 /safebox/unlock?path=...
  • GETHEAD 请求命中规则且未解锁时,会返回 401 Unauthorized
  • 解锁成功后,插件会写入当前规则专属 Cookie,Cookie 有效期来自规则的 ttlSeconds
  • 待访问 URL 中的 query 和 fragment 不参与路径匹配,匹配时只使用 pathname。

常用示例:

/upload/private/report.pdf     # 保护单个附件
/upload/private/**             # 保护整个附件目录
/vip                           # 保护 /vip 及其子路径
/**                            # 整站私密
/public/**                     # 可作为整站私密的排除路径

使用流程

  1. 在 Halo 后台安装并启用插件。
  2. 进入控制台菜单「保险箱」创建规则。
  3. 选择保护对象类型,填写保护路径、访问密码、优先级和有效期。
  4. 在「资源路径命中预览」中输入真实 URL 或路径,确认最终命中规则。
  5. 前台访问命中资源时会跳转到 /safebox/unlock,验证成功后自动回到原资源。

如果只想保护某个附件,也可以在 Halo 附件列表中打开该附件的操作菜单,选择「新增保险箱规则」。附件没有固定访问地址时不能创建规则,因为插件需要稳定的访问路径才能进行匹配。

主题集成

主题不需要主动判断资源是否受保护,访问拦截由插件的 WebFilter 统一处理。主题侧主要做一件事:按自己的设计覆盖解锁页模板。

受保护资源会统一跳转到:

/safebox/unlock?path=/upload/example.png

主题可以在当前主题的模板目录中提供 safebox-unlock.html 覆盖插件内置解锁页;未提供时使用插件内置模板。

templates/
  safebox-unlock.html

解锁表单必须使用 POST 提交到 unlockAction,并保留 pathpassword 两个字段:

<!doctype html>
<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title th:text="${displayName} + ' - 访问验证'">访问验证</title>
</head>
<body>
  <main>
    <h1 th:text="${displayName}">受保护资源</h1>
    <p th:text="${description}">该资源已开启访问保护,请输入密码后继续访问。</p>
    <p th:if="${error != null and error != ''}" th:text="${error}">密码不正确。</p>

    <form method="post" th:action="${unlockAction}">
      <input type="hidden" name="path" th:value="${path}">
      <label for="password">访问密码</label>
      <input id="password" name="password" type="password" autocomplete="current-password" required>
      <button type="submit">解锁资源</button>
    </form>
  </main>
</body>
</html>

可用模板变量:

变量 说明
displayName 匹配规则名称;为空时为 受保护资源
description 匹配规则说明;为空时为默认提示。
path 待解锁资源路径,验证通过后会跳回该路径。
error 错误文案;密码错误时为 密码不正确。
unlockAction 解锁表单提交地址,当前为 /apis/public.safebox.muyin.site/v1alpha1/unlock
unlockPagePath 固定解锁页路径,当前为 /safebox/unlock
rule 匹配到的 SafeBoxRule 对象,可读取 rule.spec.displayNamerule.spec.description 等字段。

注意事项:

  • 不要改表单字段名,pathpassword 少一个都无法解锁。
  • 不需要 Finder API,也不需要主题自己调用校验接口。表单提交成功后,插件会写入 Cookie 并重定向回原资源。
  • 如果资源被 CDN、对象存储或反向代理绕过 Halo 直接返回,插件无法拦截。资源必须经过 Halo 应用层访问。
  • 整站私密场景下,建议为公开页面配置排除路径,避免把无需保护的入口也锁住。

开发环境

  • Java 21+
  • Node.js 18+
  • pnpm 10+
  • Halo 运行版本要求:>= 2.20.14

开发

# 启动 Halo 开发服务器
./gradlew haloServer

# 修改后热重载插件
./gradlew reload

# 开发前端资源
cd ui
pnpm install
pnpm dev

构建

./gradlew build

构建完成后,可以在 build/libs 目录找到插件 JAR 文件。

测试

./gradlew test

cd ui
pnpm test:unit
pnpm type-check

许可证

GPL-3.0 © Lywq