Repository navigation
Releases
dsh-citation-auditor-0.4.1
更新日志
0.4.1(2026-10-04)
现有功能
引用来源审计。扫描 AI 回复里的网址,按 PSL 解析出注册域(en.wikipedia.org → wikipedia.org),打 0–100 分并出报表。注册域级判定,合法子域不背母域的风险分。
三种模式:
| 模式 | 判定方式 |
|---|---|
| 白名单 | 名单内绿,名单外全红 |
| 简单 | 按域名注册年份划线(默认 2023,可调) |
| 普通 | 多信号累加:TLD 风险、连字符/数字、域名长度、注册年龄、URL 结构(IP 直连、@ 混淆、短链、追踪参数、深路径、超长查询、非标准端口) |
拦截名单。命中名单的域名会在 tools/pre-execute 阶段按策略处置 web 工具:deny 直接拒绝、ask 需确认、allow 仅提醒。精确域名与 .xyz 这类 TLD 条目都受当前模式的拦截开关控制。名单增删即时生效。
网页内容注入防护。域名可信不代表页面内容可信——web_fetch 取回的正文里可能埋着「模型应当执行」的指令。命中时插件只在正文前插入一段警示块,正文一字不改,由你自行判断是否中断生成。四层检测:归一化 → 高置信正则(中英文 + 日/法/西/德/俄)→ 结构信号 → 编码复检,可选开启 typo 模糊匹配。
Web 界面。设置页卡片(模式、各模式拦截开关、拦截策略、注入防护开关、高级阈值、年龄片段编辑与测试)、会话内的可点交互报表、右下角可拖动悬浮窗。
两个工具:
| 工具 | 作用 |
|---|---|
citation_audit |
审计一段文本,返回结构化结果 + 纯文本报表 |
citation_manage |
查状态、启停、切模式、增删名单、切拦截策略、开关注入防护、测试年龄片段 |
配置与数据。全部存放在 ~/.citation-auditor/,每个 key 一个 JSON 文件,可直接用编辑器打开修改,改完即生效(无需重启)。唯一的配置项是存储目录 statePath,留空用默认路径。
新增与修复
这一版以安全修复为主。以下问题均可由模型输出或攻击者网页直接触发,且多数是静默失效——不报错、不留日志。
安全
- 修复注入检测里的一个正则性能问题:特定编码的网页内容可让整个 DSH 明显变慢。现在同等输入下检测耗时从几十秒降到毫秒级。
- 修复网址里的 Unicode 点号(
。/./。)与%2E可让域名提取提前截断,从而绕过白名单和拦截名单——例如把github.com。evil.com/判成白名单里的github.com。现在提取结果与浏览器实际访问的主机一致。 - 修复正文超过扫描上限时,注入检测会被静默跳过。现在超限本身会作为一条告警呈现,不会让上限之外变成盲区。
- 修复
settings.json一旦损坏,注入防护会静默关闭而设置页仍显示「已启用」。现在两种情况显示一致。 - 修复 Linux 上点击「查看/编辑」按钮可能让 DSH 崩溃的问题(系统缺少
xdg-open时)。现在会给出明确提示。 - 修复 IP 形式的拦截条目不生效:
192.168.1.1会被错误地当成别的域名,导致加进名单也拦不到。现在 IP 原样保留。 - 修复手改
settings.json写入非数值评分权重时,风险域名会被判为「可信」。现在写错的值会自动回落到默认值。 - 修复百分号编码的网址(
https://%65vil.com/)可绕过拦截。现在按解析后的真实主机判定。
其他
- 设置页不再出现一张自动生成的重复页面(此前的
auto: false因参数传错对象而从未生效)。 - 插入注入告警时不再打断宿主里其他工具的后置处理。
- 年龄查询脚本加了内存上限,避免用户自己写坏的脚本把内存吃满。
- 拦截名单支持
.example.com这类「本域 + 全部子域」的写法(此前会被接受却永远匹配不到)。手改名单时留下的大小写或空格差异不再导致条目失效,也能正常删除了。 - 单次审计的文本长度与域名数量设了上限,避免一条超长回复引发大量网络请求。
- 注入检测自身出异常时不再把整个网页抓取变成报错。
- 来源校验不再把
0.0.0.0当作合法回环地址(它是「绑定所有网卡」的通配监听)。 package.json的engines.dsh修正到顶层(此前嵌在dsh里,不符合 DSH 清单规范)。
测试。新增 src/test/security.test.ts,为上述每条修复配了回归用例(共 29 条)。测试总数 125 → 154。
完整的技术分析、复现数据与未修问题清单见仓库内的
CODE-REVIEW.md。
安装
web profile:
dsh plugin --profile web add https://github.com/AndKinoko/DSH-Search-Citation-Auditor/releases/download/v0.4.1/dsh-citation-auditor-0.4.1.tgzdesktop profile 由 Electron 独占管理,命令行会直接拒绝(profile "desktop" is managed exclusively by the Electron application)。请在桌面端「设置 → 插件管理」里安装本地 tgz,然后重启桌面端。
装完可在设置页确认「网页注入防护」开关存在。
卸载
web:dsh plugin --profile web remove dsh-citation-auditor
desktop:设置 → 插件管理 → 卸载
用户数据(~/.citation-auditor/)不在卸载范围内,需自行删除。
0.4.0
首次引入网页内容注入防护、端点来源校验、dsh 0.2.0 兼容改造。未发布,功能完整包含在 0.4.1 中。
0.3.0
URL 结构信号、拦截策略三档(allow / ask / deny)、高级阈值 UI。
0.2.1
早期修订。
v0.3.0
v0.3.0
URL 结构信号 + 拦截策略三档 + 阈值 UI。默认行为与 v0.2.1 保持一致,可直接升级。
✨ 新功能
1. URL 结构信号(normal 模式多信号评分新增 7 个维度)
| 信号 | 说明 | 默认加分 |
|---|---|---|
| IP 直连 | 无域名归属,不走 PSL 声誉 | +25 |
userinfo / @ 混淆 |
user:pass@host、trusted.com@evil.com 类钓鱼手法 |
+25 |
| 短链域名 | bit.ly / t.co / t.cn 等,真实落点被隐藏 | +15 |
| 追踪参数 | utm_ / gclid / fbclid 等营销归因标记 | +5 |
| 深路径 | 路径 ≥ 4 段 | +5 |
| 超长查询 | 查询串 ≥ 120 字符或整串 ≥ 200 字符 | +3 |
| 非标准端口 | 非 80 / 443 或与 scheme 不匹配 | +5 |
同一注册域下各信号只计一次(多 URL 不叠加)。权重可在设置页“高级阈值”里调,或直接改 settings.json 的 scoring。
2. 拦截策略三档
| 策略 | 含义 |
|---|---|
deny(默认) |
命中拦截名单直接拒绝 web 访问 |
ask |
命中时走审批确认 |
allow |
仅在报表标红,不阻止访问 |
- 切换入口:设置页 / 悬浮窗 ⚙ /
citation_manage新增policy操作(action参数)。 - 审计结果自带逐域处置动作:
citation_audit输出、audit端点、交互报表与悬浮窗都会标出命中名单域名的当前动作;纯文本报表页脚显示当前策略。 - 仍只拦截 web 工具(web_search / web_fetch / web_browse),shell 通道不在范围。
3. 高级阈值 UI
设置页与悬浮窗新增可折叠的“高级阈值”区:年份分界线(默认 2023)与 7 项加分可直接改,非法值自动钳制;未暴露的 scoring 键继续支持手改 settings.json。
🐛 修复
- 含
@的 URL 漏提/误判:此前https://user:pass@evil.com/整条漏提,https://trusted.com@evil.com/会被截断误判为trusted.com。现完整提取并归属@后的真实主机。升级后审计出的域名可能变多,属预期行为(覆盖率修复)。 - IPv6 字面量(
http://[::1]/)暂仍不支持提取(fail-open),后续版本处理。
⬆️ 升级说明
- 默认策略为
deny、默认阈值与旧版本等效,可直接升级,无破坏性变更。 - 旧
settings.json无enforcement/scoring字段时自动按默认值合并,首次写入设置后会补全。
📦 安装
dsh plugin --profile web add https://github.com/AndKinoko/DSH-Search-Citation-Auditor/releases/download/v0.3.0/dsh-citation-auditor-0.3.0.tgzdsh-citation-auditor-0.2.1
🎉 发布说明
这是 DSH Search Citation Auditor 插件的首个正式版本。
✨ 主要功能
- 引用审计:对 DSH 网页版搜索结果的引用来源进行自动审计与标记
- 来源验证:检测搜索结果中引用的链接是否可访问、状态是否正常
- 审计报告:生成结构化的审计结果报告,便于后续分析