• mingmeo
    NSFW 内容遮照
    ID nsfw_filter版本 1.0.0插件制作者 mingmeo免费214 行 / 6 KBHook
    使用 [nsfw] 标记帖子为 NSFW 内容,增加遮照,点击确认后显示原始内容。
    app/plugins/nsfw_filter/plugin.php
    本插件的完善需要你的积极参与。安装使用中遇到任何,不要抱怨,请直接回帖描述,帮助开发者完善。
    开发日志已有 1 条

    此项目接受所有登录用户协助维护和提交更新。

    • banming
      banming
      版本 1.0.0 6a0eb44a2aea 更新:# NSFW 遮照 如果帖子/回复中带有 ```md [nsfw] ``` 标记,用户查看帖子时会有模糊遮罩层,确认观看后隐藏。release
    主楼
  • 质量报告

    插件质量报告

    插件:nsfw_filter

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    markdown.afterMarkdown 渲染后是5----
    reply.form_extra回帖编辑表单否2----
    topic.form_extra主题发布/编辑表单否2----

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    未检测到插件数据表声明。

    #1
  • mingmeo

    NSFW 遮照

    如果帖子/回复中带有

    [nsfw]

    标记,用户查看帖子时会有模糊遮罩层,确认观看后隐藏。

    最后由 mingmeo 编辑于 2026-08-16 11:18
    #2
  • mingmeo

    相关截图

    paste-20260816-112152.png

    #3
  • bbs1org

    这。。。尽量别为这种提供技术支持。小心为上

    #4
  • 350

    🔍 插件审查报告(对照《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 直接早退)。

    🐛 功能/规范缺陷

    1. 固定 CSS/JS 以内联 <style>(plugin.php:49-119)与 <script>(plugin.php:133-162、177-194)直接注入正文 HTML,未走 manifest assets(manifest 无 assets 键),违反规则 114。
    2. 类/ID 未用插件前缀:nsfw-blur-/nsfw-btn/nsfw-hint/nsfw-badge/nsfw-revealed/nsfw-insert-btn 应为 nsfw-filter-;localStorage 键 nsfw_revealed_ 未带 nsfw_filter_ 前缀。
    3. 硬编码颜色/字号:rgba(0,0,0,.5)、#fff、#2563eb、#1d4ed8、font-size:16px/14px/12px、border-radius:8px 等,违反规则 117/118。
    4. 两个 IIFE 均无名(plugin.php:134、178);脚本用全局选择器越出插件根容器(plugin.php:179)。
    5. install 写入 enabled=>1(plugin.php:8)但全代码从不读取,死配置。
    6. name「遮照」为错别字(plugin.php:203),应为「遮罩」。
    7. 二次渲染丢失原 quote_depth/topic_id 上下文(plugin.php:33 传 0)。

    ✅ 修复优先级

    1. <style>/<script> 迁到 manifest assets(高,规范+性能)。
    2. 类名/ID/localStorage 键统一 nsfw-filter-*/nsfw_filter_ 前缀,替换硬编码颜色与字号(中)。
    3. 修正 markdown.after 上下文假设并消除二次渲染(中,隐私串扰)。
    #5

发表回复

登录后回复