XIUNO BBS重构版 XIUNOX代码审计提示词分享
贰先生 7小时前

建议发布升级版/修复版/优化版/现代版/重构版的开发者发布前都用ai跑一下,

或者用计划用4.0.4版本建站但怕有问题的也可以跑一下,跑完以后再让ai根据跑出来的task.md修复。

很简单,选择项目后发送下边的指令就可以。


另外有人问为什么Xiuno X 注册需要邀请码,感觉很不好。

因为XIUNOX版本是完整底层重构,代码总量远超过原版系统,不是可能是一定会有bug,目前虽然已经更新了很多版但肯定还存在大量未排查到的 Bug。

如果现阶段无限制全面开放,有bug的程序会让大量站长遭遇各类功能故障和各种问题。

一方面源码会被随意外流分发,大批使用者出现问题后会吐槽指责开发者做这么垃圾的程序;
另一方面多数拿到源码的人只自用,不会主动提交 bug 反馈,问题长期无法收集、修复,最终形成恶性循环。

因此采用邀请码小范围内测,精准收集有效反馈、批量修复漏洞,等整体系统打磨稳定后,再对外开放注册。

而且现在小范围内测,还是有很多人遇到问题不反馈或者跑qq反馈。有时候反馈的都是重复问题。还有一些觉得问题多,抱怨一下然后吐槽你一通说懒得反馈不用了。 开源本身是耗精力的,但消耗体力和时间还好,遇到这些消耗热情的更难受。

  •  
# 任务:XiunoX 上线前代码审计(生成任务文件)

## 角色设定
你是一位资深 PHP 安全审计专家,熟悉论坛系统常见漏洞、PHP 8 特性、XSS/SQL 注入/权限越权等安全风险。

## 项目背景
XiunoX 是基于 Xiuno BBS 4.0.4 重构的轻量论坛系统,技术栈为 PHP 8.0+、MySQL 8.0+、Bootstrap 5.3、HTMX、AIeditor。项目即将上线,现需对全部代码进行系统性安全审计,并按问题类型生成独立任务文件。

## 审计原则
1. **先分析,不修改**:本轮仅输出审计任务文件,不修改任何代码。
2. **灵活判断**:如果某个变量你无法确定来源,标注"待人工确认"。
3. **区分上下文**:根据输出位置(文本节点、HTML属性、JS环境、URL)采用不同的判断标准。
4. **结合实际**:如果某个输出已在项目中被转义函数包裹(如 `e()`、`_e()`、`htmlspecialchars()`),确认其实现正确后标注为"安全"。

## 任务输出要求

按问题类型生成独立的审计任务文件,每个任务包含:
- `task.md`:任务概述、背景、目标、检查范围
- `spec.md`:详细的检查规则和判断标准(分条目列出)
- `findings.md`:该任务发现的具体问题清单(文件路径 + 行号 + 问题描述 + 修复建议)
- `fix-guide.md`:通用修复方案和代码示例

**注意**:只输出任务文件内容,不需要输出目录结构示意。

---

## 审计任务清单(高优先级,必须在上线前完成)

### 任务 01:XSS 防护(模板层)

**spec.md 检查规则:**

1. 扫描 `/view/htm/` 下所有 `.htm` 文件(含 `admin/` 子目录),找出所有 `<?php echo ... ?>` 和 `<?=...?>` 输出。
2. 判断是否使用了 `htmlspecialchars()` 或项目的自定义转义函数(如 `e()`、`_e()`、`safe()`)。
3. 检查 HTML 属性中的输出(`value="<?php echo $var; ?>"`)是否转义了引号(需使用 `ENT_QUOTES`)。
4. 检查 `<script>` 标签内的输出是否使用了 `json_encode()`。
5. 检查富文本内容(帖子正文、公告内容)是否使用了 HTMLPurifier 过滤。
6. 不需要转义的情况:纯数字 ID、系统常量、已过滤的富文本,标注为"安全"。
7. 对于无法确认来源的变量,标注"待人工确认"。


### 任务 02:SQL 注入防护

**spec.md 检查规则:**

1. 扫描 `/model/`、`/service/`、`/route/` 目录下所有 PHP 文件。
2. 识别字符串拼接的 SQL(如 `"SELECT * FROM user WHERE id=" . $id` 或 `"WHERE uid=$uid"`),标注为**高危**。
3. 识别是否使用了参数化查询(PDO prepare / bind)。
4. 检查 `ORDER BY`、`GROUP BY`、`LIMIT` 等动态字段是否做了白名单验证。
5. 检查 `db_find()`、`db_query()` 等封装函数是否正确使用了参数绑定。
6. 对于使用 `quote()` 或 `escape()` 的地方,确认其实现是否安全。


### 任务 03:权限与越权控制

**spec.md 检查规则:**

1. 扫描 `/admin/` 目录下所有 PHP 文件,检查开头是否验证了管理员身份(`$groupid == 1` 或 `is_admin()`)。
2. 扫描 `/api/` 目录下所有 PHP 文件,检查是否验证了 Token 或 Session。
3. 扫描 `/route/` 目录,检查删除、修改、移动等操作是否验证了当前用户对资源的所有权(如 `$thread['uid'] == $uid` 或调用权限服务)。
4. 检查是否存在直接通过 `$_GET['tid']` 操作资源而未做权限判断的情况。
5. 对于管理员后台的敏感操作(删除用户、修改配置),检查是否有 CSRF Token 或二次密码验证。


### 任务 04:CSRF 防护

**spec.md 检查规则:**

1. 扫描 `/view/htm/` 下所有包含 `<form>` 的模板文件。
2. 检查每个 POST 表单是否包含 CSRF Token 隐藏字段。
3. 检查每个 POST 请求处理入口是否验证了 Token 与 Session 匹配。
4. 对于 AJAX 请求(HTMX 或 fetch),检查是否在 Header 中传递了 Token。
5. 对于 GET 请求的修改操作(如果有),应标注为"需改为 POST + CSRF"。


### 任务 05:会话安全

**spec.md 检查规则:**

1. 检查登录成功后是否调用了 `session_regenerate_id(true)`。
2. 检查 `session.cookie_httponly` 是否为 1。
3. 检查生产环境是否启用了 `session.cookie_secure`(仅在 HTTPS 下)。
4. 检查登录失败是否有次数限制(防暴力破解)。
5. 检查 Session 中是否存储了敏感信息(如明文密码)。


### 任务 06:文件上传安全

**spec.md 检查规则:**

1. 检查附件上传是否验证了文件的真实 MIME 类型(`finfo_file()` 或 `mime_content_type()`),而非仅依赖扩展名。
2. 检查文件上传后是否重命名为随机名(如 `md5(uniqid())`)。
3. 检查上传目录(如 `/upload/`)是否配置了禁止执行 PHP(`.htaccess` 或 Nginx 配置)。
4. 检查是否限制了上传文件大小和上传频率。
5. 检查图片上传后是否进行了重采样(防止隐藏代码在 EXIF 中)。


### 任务 07:业务逻辑安全

**spec.md 检查规则:**

1. **发帖/回帖频率限制**:是否存在同一用户短时间大量发帖的防护。
2. **积分/金币操作**:积分增加/扣减是否有原子性操作(防止并发刷分)。
3. **密码重置流程**:重置链接是否包含不可猜测的 Token,是否设置了有效期。
4. **私信/通知**:用户是否能向自己发送私信、是否能向不存在的用户发送。
5. **搜索功能**:搜索关键词是否有长度限制,是否过滤了特殊字符。
6. **验证码**:验证码是否有有效期,是否在使用后立即失效。


### 任务 08:插件兼容性

**spec.md 检查规则:**

1. 检查原有 Hook 点是否全部保留(如 `post_start`、`thread_create_end`)。
2. 检查 Overwrite 机制是否可用(插件是否仍能覆盖核心文件)。
3. 列出所有破坏性变更(函数签名修改、类名变更、数据库字段变更)。
4. 为每个破坏性变更生成迁移指南(旧写法 → 新写法)。
5. 检查插件目录结构是否保持兼容。


### 任务 09:备份与恢复

**spec.md 检查规则:**

1. 检查升级脚本(`upgrade.php`)是否在升级前自动备份数据库。
2. 检查升级脚本是否备份了配置文件(`conf/conf.php`)。
3. 检查是否有回滚方案(如 `rollback.sh`)或一键恢复脚本。
4. 检查备份文件是否存储在 Web 根目录之外。


### 任务 10:输入验证

**spec.md 检查规则:**

1. 检查所有 `$_GET`、`$_POST`、`$_REQUEST` 参数是否进行了类型校验(如 `intval($id)`)。
2. 检查邮箱字段是否验证了格式(`filter_var($email, FILTER_VALIDATE_EMAIL)`)。
3. 检查 URL 字段是否验证了格式(`filter_var($url, FILTER_VALIDATE_URL)`)。
4. 检查用户名、版块名等是否有长度限制。
5. 检查文件包含路径(如 `include($_GET['route'])`)是否使用了白名单。

---

## 审计任务清单(中优先级,上线后可迭代修复)

### 任务 11:日志与监控

**spec.md 检查规则:**

1. 检查关键操作(登录、发帖、删除、管理员操作)是否记录了日志。
2. 检查日志是否包含敏感信息(密码、Token、IP 地址需脱敏)。
3. 检查错误日志是否配置了合理的保留策略(避免磁盘占满)。
4. 检查是否有可查看日志的后台界面(供管理员排查问题)。


### 任务 12:API 安全

**spec.md 检查规则:**

1. 检查 API 是否实施了速率限制(Rate Limiting),防止滥用。
2. 检查 API 是否限制了请求体大小(防止超大请求攻击)。
3. 检查 API 是否正确配置了 CORS(跨域资源共享)。
4. 检查 API 是否返回了敏感错误信息(如 SQL 错误、文件路径)。
5. 检查 API 是否使用了 HTTPS-only 的 Cookie 和 Secure 标志。


### 任务 13:部署与配置

**spec.md 检查规则:**

1. 检查 `display_errors` 是否在生产环境关闭。
2. 检查配置文件(`conf/conf.php` 或 `.env`)是否在 Web 根目录之外。
3. 检查目录权限是否合理(`upload/` 和 `tmp/` 可写,`route/` 和 `service/` 只读)。
4. 检查是否存在硬编码的 `http://localhost` 或 `127.0.0.1`。
5. 检查 `date_default_timezone_set()` 是否设置了正确的时区。


### 任务 14:第三方库与前端 CDN 版本检测

**spec.md 检查规则:**

1. 扫描 `/view/htm/` 下所有模板文件,提取所有 CDN 资源链接(如 Bootstrap、HTMX、TinyMCE、FontAwesome、jQuery 等)。
2. 检查每个 CDN 资源是否指定了具体版本号(如 `bootstrap@5.3.3`),而非 `latest`。
3. 检查是否有过时版本(如 jQuery < 3.5、Bootstrap < 4.5、TinyMCE < 6)。
4. 检查 CDN 资源是否使用 `integrity` 属性(SRI 校验)。
5. 检查 `/static/` 目录下是否有被模板引用但版本过旧或存在已知漏洞的库。
6. 输出表格:资源名称、当前版本、建议版本、状态(安全/需升级/需替换)。
7. 不检查 Composer 包的已知漏洞。


### 任务 15:兼容性

**spec.md 检查规则:**

1. 检查是否使用了 PHP 8.0 以下不支持的函数(如 `each()`、`create_function()`)。
2. 检查是否使用了 PHP 8.0 已废弃的函数。
3. 检查数据库连接是否支持 MySQL 8.0 的默认认证插件(caching_sha2_password)。
4. 检查模板是否在移动端正常显示(媒体断点是否完整)。
5. 检查是否兼容主流浏览器(Chrome、Firefox、Safari、Edge 最新两个版本)。


### 任务 16:代码规范

**spec.md 检查规则:**

1. 检查是否遵循 PSR-12 编码规范(缩进、命名、括号位置)。
2. 检查所有类和方法是否有 DocBlock 注释(`@param`、`@return`、`@throws`)。
3. 检查是否存在超过 500 行的超大文件(建议拆分)。
4. 检查是否存在未使用的 `use` 语句或全局函数。

---
 

 
最新回复 (2)
全部楼主
  • 贰先生 楼主
    7小时前 2
    0
    随便更新点功能就发布上线一个版本,看似对xiuno生态贡献,其实未必是好事......
  • outsider
    7小时前 3
    0
    我要拿出这帖子奉献给世人赏阅,我要把这个帖子一直往上顶,往上顶!顶到所有人都看到为止! 
返回