我的知识记录

PbootCMS后台UEditor编辑器magnet ed2k链接加http_源码修改_协议白名单

PbootCMS的UEditor编辑器插入magnet、ed2k、thunder等非标准协议链接,保存后被自动加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) && href.indexOf('://') === -1) { if (href.indexOf(':') > 0 && /^[a-zA-Z]+:/.test(href)) { // 是其他协议,不补全 } else { href = 'http://' + href; } } ``` - 把magnet、ed2k、thunder、flashget等协议加入白名单。

解决方法三:改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链接,没有http前缀。 5. 如果重新编辑后又被改,说明编辑器加载时格式化,需要改编辑器的内容加载过滤。

注意事项: - 修改前备份原文件。 - 升级PbootCMS可能覆盖static/ueditor,修改会丢失,备份后重新覆盖。 - 不要关闭所有XSS过滤,会引入安全漏洞,只加需要的协议到白名单。 - 测试普通http/https链接是否正常,不要改完影响常规链接。 - ed2k链接格式是`ed2k://|file|...|`,注意协议后是三个斜杠。

其他非标准协议: - thunder://(迅雷) - flashget://(快车) - qvod://(快播,已淘汰) - bitcoin:(比特币地址) - mailto:(邮件,通常已支持) - tel:(电话,通常已支持) 需要的都加到白名单。

UEditor是功能强大但配置复杂的编辑器,链接协议问题是常见需求。改源码一劳永逸,偶尔用的话源码模式插入更简单。

PbootCMS后台UEditor编辑器magnet ed2k链接加http_源码修改_协议白名单

标签:

更新时间:2026-08-26 17:49:24

上一篇:如何解决Nginx中的404 Not Found错误?伪静态、路径、权限、CDN全排查

下一篇:易优CMS安装提示程序和数据库版本不一致_升级数据库_解决方法完整步骤