• bbs1org
    Bing 每日壁纸
    ID bing_wallpaper版本 1.7.3插件制作者 bbs1org免费669 行 / 45.3 KBHook / 路由 / 后台页
    每天自动收集 Bing 精美壁纸,支持网站和个人背景选择,以及顶部桌面显示模式。
    app/plugins/bing_wallpaper/plugin.php
    开发日志已有 5 条

    个人独立维护项目。

    • bbs1org
      bbs1org
      版本 1.7.3 4e30e4b75b8e 更新:更新版本号release
    • bbs1org
      bbs1org
      版本 1.7.2 95548e1ce59e 更新:支持v10
    • bbs1org
      bbs1org
      版本 1.7.2 c32f2f7e2dc0 更新:优化细节
    • bbs1org
      bbs1org
      版本 1.7.1 2bc9132b8e06 更新:使用新的hook,并增加位置选项
    • bbs1org
      bbs1org
      版本 1.7.0 686cf809a199 更新:添加预览
    主楼
  • 质量报告

    插件质量报告

    插件:bing_wallpaper

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    page.head全站页面 head否5--app_attachments, app_replies读 plugin_bing_wallpapers
    page.header全站页面页头否5--app_attachments, app_replies读 plugin_bing_wallpapers
    sidebar.feature_links首页/侧栏快捷功能否5----
    top.bar.actions顶部栏插件入口,同一请求只执行一次(展示位置:版块导航与搜索框前后)否5----

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

    数据字典

    plugin_bing_wallpapers

    字段类型可空默认值约束
    startdateCHAR(8)否-主键
    topic_iduint否--
    reply_iduint否0-
    image_hashstring否--
    source_urltext否--
    created_atuint否--
    #1
  • bbs1org

    采集 Bing 每日壁纸

    #2
  • qq

    漂亮

    #3
  • bbs1org

    后台可设置网站默认背景:最新图片、历史图片、预设纯色或关闭背景。
    增加后台默认图片模糊度,范围 0-100,默认 65。
    快捷功能新增“网站壁纸”入口,用户可单独选择历史图片、纯色、关闭背景或跟随网站设置。
    用户可设置个人图片背景模糊度,范围 0-100,默认 65。
    背景图片采用全覆盖显示,小尺寸图片也会铺满页面。
    图片背景启用时,页脚文字和链接改为白色并增加阴影。

    #4
  • 350

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

    🔒 安全问题

    • plugin.php:71-91 的 bing_wallpaper_http_get() 开启了重定向跟随,但未设置重定向上限、协议白名单与响应体大小上限。建议补 CURLOPT_MAXREDIRS、CURLOPT_PROTOCOLS 并用 writefunction 限流,跟随重定向时逐跳重新校验目标。

    ⚡ 性能问题

    • plugin.php:384 当站点背景设为“最新图片”时,page.head 每页经 plugin.php:172 读库取壁纸地址,建议对最新壁纸做短期缓存,避免每页查询。

    🐛 功能/规范缺陷

    • plugin.php:369 样式写死 font-size:12px/14px 与 border-radius:8px/6px,建议改用 CSS 变量。

    ✅ 修复优先级

    1. 外部请求加固(中);2. 每页查询缓存(低);3. CSS 变量化(低)。采集流程有互斥锁与按日期幂等,整体较规范。
    #5
  • bbs1org

    版本 1.7.0 更新:
    新增后台开关:控制顶部菜单是否显示“桌面显示”按钮。
    新增壁纸风格图标,避免与暗黑模式图标混淆。
    新增桌面显示模式:- 隐藏主内容区域和页脚。

    • 保留顶部导航和壁纸背景。
    • 支持点击按钮或按 Esc 退出。

    桌面显示模式下自动取消壁纸模糊效果。
    桌面显示模式下展示当前壁纸的日期、标题和介绍。
    优化手机端壁纸展示,使用完整比例显示,减少裁切。
    新增展示缓存:- 缓存图片、标题、介绍和日期信息到插件配置。

    • 新壁纸采集后立即写入缓存。
    • 历史壁纸首次使用时自动回填缓存。
    • 最多保留 60 条缓存记录。

    管理员保存插件设置时保留已有缓存数据。

    #6
  • 399

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

    插件:bing_wallpaper v1.7.0

    🔒 安全问题

    1. 后台设置页缺少显式权限校验:bing_wallpaper_admin_page() 内部未见 need_admin() 调用,仅依赖核心 admin_page() 路由层统一调用的 need_admin() 兜底。虽然当前不构成越权(因为 admin_tabs 挂载的页面天然经过后台鉴权),但和站内其它插件(如 featured_topics、user_review)普遍在各自 admin_xxx_page() 内部也显式调用 need_admin() 的写法不一致,一旦未来核心或其它插件调整了 admin_tabs 的调用路径,本插件将失去这层保护,建议补上显式校验作为纵深防御。
    2. 后台判断请求方式用 $_SERVER['REQUEST_METHOD'] === 'POST' 手写判断,未使用核心 require_post(),效果等价但不统一。
    3. 外部图片下载(bing_wallpaper_save_image)仅通过 getimagesizefromstring 校验 MIME 类型白名单(jpeg/png/gif/webp),未见对下载源做协议/主机白名单限制;但源地址固定拼接自 cn.bing.com 域名(bing_wallpaper_absolute_url 兜底),不接受用户可控输入,风险较低。

    ⚡ 性能问题
    未发现明显问题。壁纸展示相关的读取(bing_wallpaper_background_details)有基于配置的内存/持久化缓存(display_cache 存入 plugin_config),非每次请求都查库;计划任务有文件锁防止并发采集。

    🐛 功能/规范缺陷

    1. 命名前缀检查:函数、CSS 类、Cookie 键(bing_wallpaper_preference/bing_wallpaper_blur)均带插件前缀,未见冲突。
    2. CSS 中存在少量非语义字面量色值(如 #101010、#fff 用于桌面模式遮罩),属于还原壁纸展示效果的场景色,可视为规则允许的例外("还原第三方品牌或表达数据类别"场景),非明显违规。
    3. 采集账号密码使用 random_bytes(32) 随机生成后哈希存储,不可登录使用,处理稳妥。

    ✅ 修复优先级
    均为低优先级规范一致性问题:建议在 bing_wallpaper_admin_page() 内补充显式 need_admin() 与 require_post(),与站内其它插件写法保持一致,降低未来维护风险。

    #7
  • bbs1org

    版本 1.7.0 更新:
    添加预览

    #8
  • bbs1org

    版本 1.7.1 更新:
    使用新的hook,并增加位置选项

    #9
  • bbs1org

    版本 1.7.2 更新:
    优化细节

    #10
  • bbs1org

    版本 1.7.2 更新:
    支持v10

    #11
  • bbs1org

    版本 1.7.3 更新:
    更新版本号

    #12

发表回复

登录后回复