真实操作案例软件开发与编程

代码质量审查:Tokeny 实操案例

审查给定的本地示例代码,说明可复现触发条件和风险,按优先级给出修复建议,生成安全版本及最小测试。

作者:Tokeny 团队 · Windows · Tokeny 1.7.8 · gpt-6-sol

准备这次任务的输入

在 Tokeny 中新建工作空间,将下载的样例解压到工作空间,选择支持工具调用的模型。本例使用合成演示数据或文中列出的公开资料。

  • users.py
下载输入样例

把任务交给 Tokeny

审查给定的本地示例代码,说明可复现触发条件和风险,按优先级给出修复建议,生成安全版本及最小测试。

交付文件:review.md、users_fixed.py、test_users.py。
验收要点:
- 指出 SQL 注入
- 修复使用参数化查询
- 正常名称与恶意名称都测试
这是使用合成演示输入或指定公开资料的真实操作案例。请先读取工作空间输入,再实际生成文件并自检。所有写入、脚本与临时服务限于当前工作空间;临时服务只监听 127.0.0.1,执行后关闭;不触达外部收件人、不发布、不付款、不更改系统设置,不调用子智能体。需要公开资料时可读取给定 URL。只启用完成任务必需的工具。另写 report.md(中文)和 report.en.md(英文),简洁、完整,包含输入、处理步骤、真实结果、检查方式和局限;失败或未验证部分如实记录,不能宣称成功。最终回复用中文列出产物、关键结果与待核实项。

本次使用独立演示工作空间。复现时,请根据自己的文件与权限设置检查操作,确认后继续。

实际执行过程

任务从 Tokeny 输入框提交,由在线模型读取资料并调用工具实际执行。本例核对本地演示任务与实际生成的文件,结果和检查方法见下文。

Tokeny 1.7.8 中「代码质量审查」的真实执行会话与生成文件。点击可查看原图。
Tokeny 1.7.8 中「代码质量审查」的真实执行会话与生成文件。点击可查看原图。

产物、结果与复核

输入

读取了工作空间中的 users.py、ENVIRONMENT.md 和 .tokeny/manifest.json。目标代码通过字符串拼接生成用户查询:... WHERE name = ' + name + '。

处理步骤

  1. 检查目录与输入文件,确认没有现成测试或数据库初始化脚本。
  2. 识别 name 未参数化导致的 SQL 注入风险,并构造 SQLite 内存数据库作为最小复现环境。
  3. 生成 users_fixed.py,改为 WHERE name = ? 并传入 (name,)。
  4. 生成 test_users.py,覆盖普通名称、含单引号的合法名称和 "' OR 1=1 --" 恶意名称。
  5. 运行 python -m unittest -v test_users.py,检查测试结果和交付文件。

真实结果

原始函数使用恶意名称 "' OR 1=1 --" 在内存 SQLite 中实际返回了 3 条记录(Alice、Bob、O'Reilly),证明结果集可被扩大。修复后的实现使用参数化查询;python -m unittest -v test_users.py 实际运行 3 个测试,结果为 OK,普通名称、含引号的合法名称和恶意名称检查均通过。

检查方式

使用 Python 标准库 unittest 和内存 sqlite3 数据库执行 test_users.py;实际输出为 Ran 3 tests in 0.002s、OK。另以同样的内存数据库调用原始 users.py,恶意输入实际返回全部 3 条记录。

局限

未连接生产数据库,未验证 PostgreSQL、MySQL 等驱动的具体占位符语法,未覆盖真实 HTTP 调用链、鉴权、权限和并发行为。该测试证明修复在本地 SQLite 最小场景有效,不等同于完整生产安全评估。

下载产物,自己核对

压缩包保存本次执行生成的文件。替换成自己的资料后,可以按下面的检查点验收。

  • 指出 SQL 注入
  • 修复使用参数化查询
  • 正常名称与恶意名称都测试
review.md · 2 KBusers_fixed.py · 1 KBtest_users.py · 1 KBreport.md · 2 KBreport.en.md · 2 KB
下载本次实际产物

继续探索同类场景