• 233
    外链用途说明
    ID link_disclosure版本 1.1.1插件制作者 233免费415 行 / 25.3 KBHook / 后台页
    要求作者说明站外链接用途,支持审查记录、域名黑名单和新外链主题通知。
    app/plugins/link_disclosure/plugin.php
    开发日志已有 1 条

    个人独立维护项目。

    • 233
      233
      版本 1.1.1 9b4645fa3163 更新:旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。release
    主楼
  • 质量报告

    插件质量报告

    插件:link_disclosure

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    reply.after_render主题查看页/回帖列表逐条渲染是5----
    topic.after_render首页/版块列表/主题查看逐条渲染是(列表跳过)5----
    topic.after_view主题查看页完成加载否4---读 plugin_link_disclosure_reasons
    reply.after_save回帖保存后否3--app_users写 plugin_link_disclosure_reasons
    reply.before_save回帖发布/编辑表单提交否3----
    topic.after_save主题保存后否3--app_users写 plugin_link_disclosure_reasons
    topic.before_save主题发布/编辑表单提交否3----
    content.before_delete内容删除操作否2--app_replies写 plugin_link_disclosure_reasons
    reply.form_extra回帖编辑表单否2---读 plugin_link_disclosure_reasons
    topic.form_extra主题发布/编辑表单否2---读 plugin_link_disclosure_reasons

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

    数据字典

    plugin_link_disclosure_reasons

    字段类型可空默认值约束
    content_kindkey否-主键
    content_iduint否-主键
    user_iduint否--
    reasonstring否--
    hostsstring否''-
    updated_atuint否--
    #1
  • one

    感谢大佬,外链安全标识 可以在后台设置白名单吗?白名单链接可以直接跳转不用在新窗口打开。

    #2
  • 233

    可以,已在真正负责打开方式的 external_link_badge 插件中实现并更新到 1.1.0(topic/268)。后台新增「外链安全标识」设置页,可每行填写一个可信域名;主域名和其子域名都会放行。白名单链接不显示外链箭头、不会设置 _blank,直接在当前窗口打开;其他外链仍保留箭头、noopener noreferrer 和新窗口打开。已实测 allowed.example.org 白名单链接 target 为空,非白名单的 example.com 仍为 _blank。外链用途说明插件继续负责发布说明、审查记录和黑名单,两者职责不混在一起。

    #3
  • 350

    🔍 插件审查报告(对照《AI 开发规则》与开发者文档)

    🔒 安全问题

    未发现明显问题。外链提取仅匹配 http/https/www,输出全部经 h() 转义;黑名单域名与子域名匹配;通知用户查询用 sql_marks 参数化;content.before_delete 清理含回帖子查询且参数化。

    ⚡ 性能问题

    未发现明显问题。topic.after_view 一次性批量预载外链说明,topic/reply.after_render 红区钩子仅读内存缓存,零 DB 读;后台列表单查询 + LIMIT 200。

    🐛 功能/规范缺陷

    1. 黑名单与通知配置用 setting()/save_settings_values() 存全局设置(plugin.php:60、137、248、270),且卸载未清理这些 plugin_link_disclosure_* 键。建议改用 plugin_config()/plugin_save_config(),并在 uninstall 中一并清理。

    ✅ 修复优先级

    仅配置存储规范化一项,低优先级。

    #4
  • 399

    🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)

    插件:外链用途说明(link_disclosure)v1.1.1

    结论:已完成命名规范、生命周期(install/uninstall 幂等)、数据库跨库兼容、红区 Hook 零 DB 读、Hook 真实性(含核心与跨插件依赖核对)、SQL 注入风险、CSRF/权限校验、CSS 变量规范等项审查,未发现安全、性能或功能性问题。

    #5
  • 233

    旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。

    #6

发表回复

登录后回复