• beku
    RESTful API
    ID restful_api版本 1.0.4插件制作者 beku免费304 行 / 7.5 KB路由 / 后台页
    提供 RESTful API 接口以输出列表和帖子的 JSON 数据供第三方客户端APP调用
    app/plugins/restful_api/plugin.php
    开发日志已有 1 条

    个人独立维护项目。

    • beku
      beku
      版本 1.0.4 59970253dc5b 更新:1.适配核心模板的 forum_group_allowed/allow_view_groups 权限逻辑,对受限内容要求相关权限,否则返回403无权限 2.cache-control修改为private以禁用公共缓存release
    主楼
  • 质量报告

    插件质量报告

    插件:restful_api

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表

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

    数据字典

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

    #1
  • bbs1org

    @beku 给个接口文档吧

    #2
  • beku

    接口文档如下,之前的帖子,https://bbs1.org/topic/406 ,我再把注释加上

    Index API:/index.php?a=api_index

    [
    	{
    		"own": "张三",  //楼主
    		"lasttime": "1700000000", //最后回复时间
    		"reply": 0, //回复楼层数
    		"title": "标题1", //帖子标题
    		"postid": "123", //帖子postid
    		"tag": 1, //分类标签
    		"perm": 0, //权限
    		"img": "1.png", //用户头像
    		"pintop": 0  //是否置顶
    	},
    	{
    		"own": "李四",
    		"lasttime": "1700000000",
    		"reply": 9,
    		"title": "标题2",
    		"postid": "124",
    		"tag": 1,
    		"perm": 0,
    		"img": "2.png",
    		"pintop": 0
    	}
    ]

    View API:/index.php?a=api_view&id=1

    id为index api返回的postid
    可设置伪静态:/view/1

    [
    	{
    		"id": 1, //楼层id
    		"user": "张三", //用户name
    		"img": "2.png", //用户头像
    		"op": true, //是否为楼主
    		"post": "帖子内容", //内容
    		"post_time": 1700000000, //发帖时间
    		"tag": 1, //当前tag
    		"postid": "111" //帖子id
    	},
    	{
    		"id": 2,
    		"user": "李四",
    		"img": "2.png",
    		"op": false,
    		"post": "回复",
    		"post_time": 1700000000,
    		"tag": 0,
    		"postid": "1234"
    	}
    ]

    最后编辑于 2026-08-12 17:24
    #3
  • 350

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

    存在一处严重越权泄露问题,需立即处理后再对外使用。

    🔒 安全问题

    1. plugin.php:29-89 的列表/主题/回帖查询未做任何版块可见性过滤(forum_group_allowed/allow_view_groups),plugin.php:91-184 两个路由无需登录即可输出数据,受限版块(成员/内部版)的主题标题、正文、回帖、用户名与头像可被匿名拉取,绕过核心在 index.php 中对版块可见性的强制校验。请查询时 JOIN 版块并过滤当前用户可见版块,或对受限内容要求登录并逐条校验权限。
    2. plugin.php:9 未配置时默认启用,安装即公开 API。建议默认关闭,由站长显式开启。
    3. plugin.php:18 返回 Cache-Control: public, max-age=60,受限内容可能被共享缓存 60 秒,权限变更后仍会短暂泄露旧数据。建议改为 private, no-store。

    ⚡ 性能问题

    未发现明显问题。查询为单条 JOIN + LIMIT,无循环查询。

    🐛 功能/规范缺陷

    1. plugin.php:237 description 含“RESTful API/JSON/第三方客户端”等技术实现描述,建议改为用户可感知的功能描述。
    2. plugin.php:130-184 读取主题未递增 view_count,与核心浏览统计行为不一致,可补充或说明。

    ✅ 修复优先级

    最高优先级修复 #1(版块权限越权泄露)与 #2(默认关闭);其次调整缓存头 #3;最后清理 description 与浏览统计。

    #4
  • beku

    版本 1.0.4 更新:
    1.适配核心模块的 forum_group_allowed/allow_view_groups 权限逻辑,对受限内容要求相关权限,否则返回403无权限
    2.权限检查内置cache逻辑,以优化性能避频繁查表
    3.cache-control修改为private以禁用公共缓存

    最后由 beku 编辑于 2026-08-18 17:11
    #5
  • 350

    🔍 复核报告(v1.0.4,回应此前审查)· @beku

    ✅ 已确认修复

    1. 越权泄露受限版块内容——已修复。新增 api_can_view_forum()(plugin.php:29-47),经 forum_by_id() 取版块后调用 forum_group_allowed($forum, 'allow_view_groups')(44),与核心 index.php:857/2913 同口径。列表循环逐条过滤(141 continue),详情页命中受限版块返回 err('无权限', 403)(196-197)。匿名 me()=null → gid=0,受限版块不再外泄。
    2. Cache-Control public——已修复(基本)。18 行由 public, max-age=60 改为 private, max-age=10,共享缓存泄露已消除。

    ❌ 未生效 / 新问题

    1. 默认启用——未修复。plugin.php:9 'enabled' => !isset($raw['enabled']) || (int)$raw['enabled'] === 1:未配置时 !isset() 恒为真,安装即默认公开,仍与「默认关闭」建议相悖。
    2. description 技术名词——未修复。plugin.php:295 仍含「RESTful API / JSON / 第三方客户端」,违反规则(description 只写用户可感知收益)。
    3. view_count 未递增——未修复。api_view_page()(180-239)整段未调用 mark_viewed()/UPDATE app_topics SET view_count=view_count+1,与核心 index.php:1113/2915-2917 不一致。

    💡 顺带建议

    • 18 行仍有 max-age=10,含敏感内容的受限接口建议 no-store。
    • 129 行 $max_scan=1000:受限版块密集时可能扫描 1000 条仍凑不满 index_limit,属功能边界,可改为按需翻页或 JOIN 版块一次性过滤。
    • 297-299 路由名 api_index/api_view 无插件前缀,理论存在跨插件冲突风险。
    • 118 行 err('API 未启用', 404) 语义上更宜 403。

    总结:最严重的越权泄露与共享缓存已修复,权限模型正确;但「默认启用」「description 技术名词」「view_count」三处未生效,建议一并收尾后升版本。

    #6
  • beku

    1.此插件并非默认插件,用户安装即有此需求,无此需求便不会安装。不存在有需求还默认关闭不启用

    2.view_count逻辑保留为网页浏览量,API统计不一定要污染现有网页策略统计

    最后由 beku 编辑于 2026-08-18 21:34
    #7
  • 399

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

    插件:RESTful API(restful_api)v1.0.4

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

    #8

发表回复

登录后回复