PbootCMS后台UEditor编辑器链接自动加http_magnet ed2k_源码修改
PbootCMS的UEditor编辑器给magnet、ed2k等非标准协议链接加http前缀,源码修改完整方案。
问题原因: - UEditor的XSS过滤机制,a标签href非白名单协议被加http://。 - 自动链接识别功能,把不以http开头的字符串当不完整链接补全。 - magnet:、ed2k://、thunder://不在默认白名单。
方案一:HTML源码模式插入(不改源码,最简单) - 编辑器点"HTML"按钮切源码模式。 - 直接写:`磁力链接` - 切回可视化后不要点击该链接编辑,直接保存。 - 保存后前台查看源码,href没有http前缀。 - 适合偶尔加链接的场景。
方案二:改ueditor.all.js链接过滤 - 打开`static/ueditor/ueditor.all.js`(未压缩版)。 - 搜索`http://`找到自动补全代码,通常: ``` if (!/^https?:///i.test(href)) { href = 'http://' + href; } ``` - 改成: ``` if (!/^(https?|ftp|magnet|ed2k|thunder|flashget|qvod):/i.test(href)) { if (href.indexOf('://') === -1 && !/^[a-zA-Z]+:/.test(href)) { href = 'http://' + href; } } ``` - 把需要的协议都加到正则白名单。
方案三:改XSS过滤白名单 - ueditor.all.js搜索`whitList`或`a:`的配置。 - 找到a标签的href属性过滤规则。 - 把magnet、ed2k等加到允许的协议。 - 部分版本在filterRules里,找`'a': { ... href: ... }`修改。
方案四:改ueditor.config.js - 部分版本配置文件有`'linkProtocol': 'http'`。 - 改成空字符串`''`,关闭自动补全。 - 搜索`linkProtocol`或`autolink`相关配置。
压缩版处理: - 只有ueditor.all.min.js时修改困难。 - 下载对应版本未压缩ueditor.all.js。 - 修改后用JS压缩工具(Toptotal、JSCompress)压缩,替换min.js。 - 或页面引用改成ueditor.all.js(开发版),文件大但修改方便。
PbootCMS PHP层检查: - 后台保存文章时PHP可能也对content做XSS过滤。 - 检查`apps/admin/controller/content/ContentController.php`保存方法。 - 搜索`http://`看有没有自动补全逻辑。 - 如果PHP层也加前缀,同时改PHP代码。
测试流程: 1. 后台新建文章。 2. HTML源码模式插入magnet链接。 3. 保存。 4. 查看前台页面源码,确认href是原始magnet链接。 5. 如果重新编辑后又被改,说明编辑器加载时格式化,需要改内容加载过滤。
其他协议支持: - thunder://(迅雷) - flashget://(快车) - bitcoin:(比特币) - mailto:(邮件,通常已支持) - tel:(电话,通常已支持) 需要的都加到白名单。
注意事项: - 修改前备份原文件。 - 升级PbootCMS可能覆盖static/ueditor,修改丢失,备份后重新覆盖。 - 不要关闭所有XSS过滤,会引入安全漏洞,只加需要的协议。 - 测试普通http/https链接正常,不要影响常规链接。 - ed2k格式是`ed2k://|file|...|`,协议后三个斜杠。
UEditor是功能强大但配置复杂的编辑器,链接协议问题是常见需求。改源码一劳永逸,偶尔用的话源码模式插入更简单。根据使用频率选择方案。

更新时间:2026-08-26 17:19:33