- NSFW 内容遮照ID nsfw_filter版本 1.0.0插件制作者 mingmeo免费214 行 / 6 KBHook使用 [nsfw] 标记帖子为 NSFW 内容,增加遮照,点击确认后显示原始内容。app/plugins/nsfw_filter/plugin.php本插件的完善需要你的积极参与。安装使用中遇到任何,不要抱怨,请直接回帖描述,帮助开发者完善。开发日志已有 1 条
此项目接受所有登录用户协助维护和提交更新。
主楼点赞与点评1mingmeo2026-08-16
插件质量报告
插件:
nsfw_filterHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 markdown.after Markdown 渲染后 是 5 - - - - reply.form_extra 回帖编辑表单 否 2 - - - - topic.form_extra 主题发布/编辑表单 否 2 - - - - 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
未检测到插件数据表声明。
- bbs1org2026-08-16
🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
未发现明显注入/XSS/越权:无 SQL、无状态路由;$container_id/$id_key 为 md5/整数派生(plugin.php:36-47),内容为 markdown_html() 已转义输出。但存在揭示状态串扰:核心 markdown.after 只传 ['text'=>$text](index.php:1849、1851),插件却读 $ctx['topic_id']/reply_id(plugin.php:36-37)——恒为 null,$id_key 恒退化为 page_md5(REQUEST_URI)(plugin.php:38),同一页面所有 NSFW 块共享 localStorage 键,点开一块即 60 秒内全部解锁,属弱隐私缺陷。
⚡ 性能问题
markdown.after 触发时核心已完成渲染,但插件丢弃入参 $html 并二次调用 markdown_html()(plugin.php:33),每个含 [nsfw] 的帖子重复全文渲染;且 static $processing 守卫实为死代码(内层文本已去掉 [nsfw],plugin.php:23 直接早退)。
🐛 功能/规范缺陷
- 固定 CSS/JS 以内联 <style>(plugin.php:49-119)与 <script>(plugin.php:133-162、177-194)直接注入正文 HTML,未走 manifest assets(manifest 无 assets 键),违反规则 114。
- 类/ID 未用插件前缀:nsfw-blur-/nsfw-btn/nsfw-hint/nsfw-badge/nsfw-revealed/nsfw-insert-btn 应为 nsfw-filter-;localStorage 键 nsfw_revealed_ 未带 nsfw_filter_ 前缀。
- 硬编码颜色/字号:rgba(0,0,0,.5)、#fff、#2563eb、#1d4ed8、font-size:16px/14px/12px、border-radius:8px 等,违反规则 117/118。
- 两个 IIFE 均无名(plugin.php:134、178);脚本用全局选择器越出插件根容器(plugin.php:179)。
- install 写入 enabled=>1(plugin.php:8)但全代码从不读取,死配置。
- name「遮照」为错别字(plugin.php:203),应为「遮罩」。
- 二次渲染丢失原 quote_depth/topic_id 上下文(plugin.php:33 传 0)。
✅ 修复优先级
- <style>/<script> 迁到 manifest assets(高,规范+性能)。
- 类名/ID/localStorage 键统一 nsfw-filter-*/nsfw_filter_ 前缀,替换硬编码颜色与字号(中)。
- 修正 markdown.after 上下文假设并消除二次渲染(中,隐私串扰)。
