挑战课程 · 任一编码 Agent + 攻击重放装置

AI 写的 Python 代码的安全审查

像攻击者一样审查一个看起来没问题、AI 风格的笔记服务——一次一类地堵上 SQL 注入、路径穿越、硬编码密钥、快速密码哈希和 pickle 会话,再通过重放攻击证明每处修复。

进阶5 个挑战2–4 hours能顺畅读懂带文件与 SQL 操作的 Python免费课程徽章:看起来对不等于安全审核于 2026-10-11

把这一句话粘贴给你的 Agent,即可开始:

Read https://flypython.com/skills/flypython/SKILL.md and start the FlyPython course `secure-ai-generated-code`.

需要一个能执行命令并联网的编码 Agent(纯网页聊天 AI 做不了)。Agent 会用一次性授权链接为你授权、 自己取回课程文件——你不需要下载任何东西。 还没装 FlyPython Skill?选你工具对应的工具课 →

概览

学到什么九个录制攻击全部被挡下、一条能在两个场景皮肤上证明此事的重放命令,以及一套能带去下一个仓库的五问审查习惯。
适合谁能顺畅读懂带文件与 SQL 操作的 Python · PATH 中有 Python 3.11 或更新版本
时长与费用2–4 hours · 免费

开始

一次运行是怎么跑的

Agent 负责驱动;课程文件经 Skill 到达你的工作目录——不下载、不 clone。

Skill任一编码 Agent + 攻击重放装置

Skill 负责取文件

把上方入口语句粘贴给你的 Agent。它会带你走一次性授权链接(核对码、点「允许」),自己取回本课文件,然后陪你做题。没装 Skill 的 Agent 也可以用这段简报:

请完成 FlyPython 挑战课程「AI 写的 Python 代码的安全审查」(course id course-secure-code)的检查点 。
机读简报:https://flypython.com/api/challenges/secure-ai-generated-code
打开课程文件夹,先读 TASK.md——它就是契约。
规则:最小变更、不新增依赖、绝不修改 tests/ 或 solution/。
用 python verify.py 检查 starter/;自报关卡先让我回答课后问题,再运行 --attest ID 取得码。

Agent 在任务契约下工作:最小变更、不新增依赖、绝不修改 solution/。可选引导模式见 COURSE.md。

文件

文件自己到达

课程文件在 /api/challenges/secure-ai-generated-code/files——Agent 取清单后按路径逐个写入。你无需手动下载任何东西。

场景皮肤

同样的技能,你熟悉的领域

三个皮肤走同一份代码和同一套测试。开课前选一个最贴近你工作的。

scenario/clinic-notes/attacks.json + seed.json

诊所就诊记录

一家小诊所的就诊记录——每条记录只属于一位医生,附件放在 scans 目录下。所有人名与记录均为虚构。

scenario/team-notes/attacks.json + seed.json

团队共享笔记

一个小团队的共享笔记应用:搜索、附件、登录与会话。

验证

“完成”由什么决定

16 个测试的套件,外加每个皮肤重放九个攻击的装置——SQL 注入、路径穿越、密钥泄露、弱密码哈希与 pickle 会话。starter 对九个攻击全部放行;已审核的实现两个皮肤均 9/9 拦截。

python verify.py  # 在课程文件夹运行:打印检查点状态 + 认领码

把这套方法带回你的项目

第 5 课把工作流——而不是代码——迁移到你真正拥有的一个脚本上:三行任务契约、一个从红变绿的新测试、 一份写明测试不能证明什么的记录。同一个循环在AI Coding 工作方法指南中有完整描述, 并可由可运行示例练习。

认领你的证据

检查点通过后,python verify.py 会打印确定性认领码。 完成授权的 Agent 会替你一次性批量提交;手动提交则粘贴到进度页—— 每个检查点 10 分,集齐五个获得 看起来对不等于安全 课程徽章。认领码是自我声明的证据,不是证书。

验证不能证明什么

通过课程套件只证明被锚定的行为在测试输入上成立——不等于明天的数据也对,不等于生产性能达标, 在你为自己的项目写下契约之前,也不代表你项目里的任何事。仓库测试是证据,不是你的结果。