Rhex 论坛系统

做爱做的事!

关于小黑屋帮助FAQ协议Rss赞助
Rhex 论坛系统 @ 2026·Powered by Rhex 1.0.35
🏠首页
摸鱼
吹牛逼
Rhex讨论
程序发布建议/Bug插件发布🪐优秀站点
测试区
测试画廊测试节点
107

这个用户还没有留下简介。

第 1 条附言

Rhex 论坛系统

登录后即可签到、查看积分与快捷发帖

Rhex 论坛系统是一个适合开源部署的现代论坛基础站点

相关主题

帖子和评论外链过滤插件(AI写的)在Redis有密码和多个程序共用的情况下,是不是也支持?

主题标签

全部标签
暂无标签
目录
Markdown 外链治理功能简介当前支持的治理范围当前链接治理策略1. 裸域名治理2. 显式 Markdown 链接治理3. 渲染后 HTML 兜底允许保留的链接类型1. 站内链接2. 白名单链接3. 显式 Markdown 链接(且策略允许)什么情况下链接会失效情况 A:开启“仅允许站内链接可点击”情况 B:配置了白名单,但目标域名不在白名单内情况 C:目标命中黑名单情况 D:关闭显式 Markdown 外链后台配置项基础开关域名策略治理范围域名规则格式合法示例非法示例当前规则限制当前识别与匹配能力当前实现限制1. 不完全接管输入期编辑器行为2. 评论 / 私信 / 资料展示层主要依赖保存前治理3. 工具栏插入链接不等于一定保留适用场景插件文件结构安装后建议检查版本说明
·
昨天

感谢群友提供的API
https://api.zicc.cc/register?aff=6ATFMGER7UBE

回复讨论
5

登录后可参与回复讨论。

文明发言,理性讨论
Calm·昨天
天蝎 OP回复 @Calm·昨天
☯︎懋和道人
📝💬
·昨天
Blue
·5小时前
琥珀先生
💎
·3小时前
首页
Rhex讨论
Rhex讨论 节点
程序发布帖 53插件发布帖 28🪐优秀站点帖 7
插件发布

Markdown外链治理

Markdown 外链治理

一个面向 Rhex 的内容治理插件,用于统一控制 Markdown 内容中的裸域名自动链接、显式外链保留策略,以及渲染后的外链兜底处理。

功能简介

本插件主要解决以下问题:

  • 用户输入 abc.com、www.example.com、https://example.com 时,被宿主自动识别并渲染为可点击外链
  • 内容中混入站外链接,带来导流、钓鱼、社工传播、审核绕过等治理风险
  • 不同内容场景(帖子、评论、私信、资料等)缺乏统一外链策略

插件当前采用 结果治理优先 的实现方式:

  1. 保存前治理:在内容写入业务前,先对裸域名和显式 Markdown 链接进行策略判定
  2. 渲染后治理:在帖子正文渲染成 HTML 后,再对 <a> 进行一次兜底净化
  3. 后台配置治理:提供后台页统一设置规则、作用域、白名单、黑名单和站内域名

当前版本不改宿主编辑器默认行为,因此重点是“保存结果”和“最终渲染结果”的治理,而不是完全接管输入时的编辑器体验。


当前支持的治理范围

插件已接入以下内容场景:

  • 帖子正文
  • 评论内容
  • 私信正文
  • 举报补充说明
  • 用户简介
  • 用户个人介绍
  • 帖子正文渲染后的 HTML 兜底处理

对应 Hook 声明见:

  • post.content.value
  • comment.content.value
  • message.body.value
  • report.reasonDetail.value
  • user.profile.bio.value
  • user.profile.introduction.value
  • post.content.render

插件清单见 addon.json。


当前链接治理策略

1. 裸域名治理

以下形式会被视为裸域名候选:

  • abc.com
  • www.example.com
  • https://example.com
  • example.com/path
  • 192.168.1.10
  • localhost

若命中治理规则,插件会在保存前对其做“打断处理”,从而降低被宿主自动 linkify 的概率。

2. 显式 Markdown 链接治理

例如:

md
[官网](https://example.com)

这类链接不会无条件保留,而是仍会经过策略判断:

  • 是否允许显式 Markdown 外链
  • 是否命中黑名单
  • 是否开启“仅允许站内链接”
  • 是否配置了白名单
  • 是否命中严格白名单

所以你如果使用 Markdown 工具栏插入的是站外显式链接,在当前配置下也可能被降级为纯文本。

3. 渲染后 HTML 兜底

帖子正文在渲染成 HTML 后,插件会再次检查输出中的 <a>:

  • 允许的链接继续保留
  • 不允许的链接会降级成纯文本 / 域名掩码 / 附加说明

这意味着即使前面的保存前治理有漏网之鱼,最终显示层仍会做一次收口。


允许保留的链接类型

在默认逻辑下,以下链接更容易被保留:

1. 站内链接

例如:

  • /post/123
  • https://你的站点域名/post/123

只要命中 siteDomains,会被视为站内链接。

2. 白名单链接

如果配置了白名单,仅命中白名单的站外链接才会被保留。

例如:

txt
github.com *.microsoft.com

3. 显式 Markdown 链接(且策略允许)

显式 Markdown 链接需要同时满足:

  • allowExplicitMarkdownLinks = true
  • 不命中黑名单
  • 未开启仅站内模式,或本身是站内链接
  • 若配置了白名单,还必须命中白名单

什么情况下链接会失效

以下配置最容易导致“Markdown 编辑器工具栏插入的链接也失效”:

情况 A:开启“仅允许站内链接可点击”

即:

  • allowInternalLinksOnly = true

此时所有站外显式链接都会被禁用。

情况 B:配置了白名单,但目标域名不在白名单内

例如白名单只有:

txt
github.com *.microsoft.com

则下列链接会被禁用:

md
[Google](https://google.com)

情况 C:目标命中黑名单

黑名单优先级更高,命中后直接降级。

情况 D:关闭显式 Markdown 外链

即:

  • allowExplicitMarkdownLinks = false

此时显式 Markdown 外链也不会保留。


后台配置项

当前后台支持以下主要配置:

基础开关

  • enabled:插件总开关
  • disableAutoLinkify:禁用裸域名自动链接
  • disableProtocolLinkify:禁用协议裸链接自动链接
  • allowExplicitMarkdownLinks:允许显式 Markdown 外链
  • allowInternalLinksOnly:仅允许站内链接可点击
  • blockedLinkRenderMode:被禁用链接的显示方式

域名策略

  • siteDomains:站内域名列表
  • whitelistDomains:外链白名单
  • blacklistDomains:外链黑名单

治理范围

  • 帖子正文
  • 评论内容
  • 私信正文
  • 举报补充说明
  • 用户简介
  • 用户个人介绍
  • 通用 Markdown 渲染

后台页面文件见:

  • [markdown-link-governor-admin.view.js](file:///e:/WWWROOT/Rhex/addons/markdown-link-governor/assets/markdown-link-governor-admin.view.js)
  • [markdown-link-governor-admin.controller.js](file:///e:/WWWROOT/Rhex/addons/markdown-link-governor/assets/markdown-link-governor-admin.controller.js)
  • [markdown-link-governor-admin.model.js](file:///e:/WWWROOT/Rhex/addons/markdown-link-governor/assets/markdown-link-governor-admin.model.js)

域名规则格式

后台规则当前支持:

合法示例

txt
github.com www.example.com *.microsoft.com localhost 127.0.0.1

非法示例

txt
https://github.com example.com/path example.com:443 foo*bar.com *.127.0.0.1

当前规则限制

  • 每行一条规则
  • 只支持:域名、localhost、IPv4
  • 不支持协议
  • 不支持路径
  • 不支持端口
  • 通配符仅支持 *.example.com
  • 重复规则会被识别并提示修正

当前识别与匹配能力

当前版本已增强:

  • www. 归一化
  • IPv4 识别
  • localhost / 本地回环地址识别
  • 多段公共后缀基础域提取(如 com.cn、co.uk)
  • 严格白名单命中逻辑
  • 黑名单优先级处理

这部分核心逻辑位于:

  • [server.mjs](file:///e:/WWWROOT/Rhex/addons/markdown-link-governor/dist/server.mjs)

当前实现限制

1. 不完全接管输入期编辑器行为

当前版本不修改宿主默认编辑器,因此:

  • 输入时是否“即时自动变成链接”不一定完全受控
  • 插件更关注保存结果和最终渲染结果

2. 评论 / 私信 / 资料展示层主要依赖保存前治理

目前最强的 HTML 渲染兜底是帖子正文:

  • post.content.render

其他场景更多依赖保存前规则处理。

3. 工具栏插入链接不等于一定保留

Markdown 工具栏插入的显式外链,仍然会被统一外链治理策略审查。

如果策略不允许,该链接会被降级。


适用场景

这版插件更适合:

  • 想限制裸域名自动转链接
  • 想减少站外导流
  • 想治理社区外链风险
  • 想通过白名单/黑名单统一控制链接行为
  • 想让帖子、评论、私信、资料等内容遵循同一套规则

如果你的目标是:

  • 允许用户主动插入大多数外链
  • 仅仅禁止裸域名自动 linkify

那么当前策略会偏严格,需要后续再做更细的显式链接放行策略。


插件文件结构

txt
markdown-link-governor/ ├─ addon.json ├─ README.md ├─ dist/ │ └─ server.mjs └─ assets/ ├─ markdown-link-governor-admin.js ├─ markdown-link-governor-admin.model.js ├─ markdown-link-governor-admin.controller.js └─ markdown-link-governor-admin.view.js

安装后建议检查

  1. 打开插件后台页,确认配置可以正常加载和保存
  2. 测试裸域名:abc.com
  3. 测试协议裸链接:https://example.com
  4. 测试显式 Markdown 链接:
md
[官网](https://example.com)
  1. 测试白名单、黑名单和站内域名策略是否符合预期
  2. 检查帖子详情页最终渲染是否符合预期

版本说明

当前版本:1.0.0

这是一个以 不改宿主代码前提下的最强可用版 为目标实现的外链治理插件。

附件列表

共 1 项
站内附件

markdown-link-governor.zip

ZIP · 13 KB · 下载 5 · 可下载公开下载
Rhex
Rhex
建议/Bug
帖 119
·昨天
天蝎