# CSPKit 项目申报书

## 基本信息

- 项目名称：CSPKit：MoonBit 原生 Content-Security-Policy 解析、审计与差异分析工具库
- 参赛者：ZYK-ai-nb
- 联系方式：ZYK-ai-nb
- GitHub 仓库链接：https://github.com/ZYK-ai-nb/mooncake-auditor-public.git
- 项目方向：MoonBit 原生开源库 / Web 安全策略解析与开发工具
- 是否为移植项目：否，原创 MoonBit 开源项目
- 开源许可证：Apache-2.0

## 项目简介

CSPKit 是一个使用 MoonBit 实现的 Content-Security-Policy 策略解析、风险审计、评分、报告与差异分析工具库。项目面向 MoonBit WebAssembly 应用、静态站点生成器、API 网关和安全检查工具，解决 CSP 策略字符串难以结构化解析、难以自动化审计、难以比较变更和难以形成机器可读报告的问题。通过该项目，开发者可以在发布前发现 `unsafe-inline`、`unsafe-eval`、通配符、明文 HTTP 源、缺失 `default-src`、重复指令等常见安全隐患，并获得策略评分、加固建议和可复用模板。

## 项目方向与适用场景

本项目属于 MoonBit 原生基础库与 Web 安全开发工具，适合库作者、WebAssembly 应用开发者、静态站点工具开发者、安全检查 CLI、API mock 工具和教学项目使用。项目不绑定外部 JS 库，不依赖复杂外部环境，评审可以直接通过 MoonBit 工具链构建、测试并运行示例。

## 拟实现的核心功能

- 解析 CSP 策略字符串，输出结构化 `Policy` 和 `Directive`；
- 支持指令查询、重复指令识别和 fetch directive 的 `default-src` fallback；
- 审计通配符、明文 HTTP、`data:`、`unsafe-inline`、`unsafe-eval` 等风险；
- 检查缺失 `default-src`、`object-src`、`base-uri`、`frame-ancestors` 等加固项；
- 比较两份 CSP 策略的新增、删除和变更指令；
- 分类 source expression，识别 keyword、nonce、hash、scheme、host、wildcard、`data:`、`blob:` 等来源；
- 提供 CSP 指令目录、规则目录、策略评分、多格式审计报告和加固建议；
- 提供 20 个以上覆盖静态站点、SPA、WASM、管理后台、支付页、上传页等场景的策略模板；
- 提供可运行示例、测试、README、CI 和 Mooncakes 发布配置。

## 项目现有基础与本次计划

当前已完成 MoonBit 工程、核心库、黑盒测试、白盒测试、功能测试、可运行示例、README、设计说明、调研记录、验收清单、GitHub Actions CI 和 Mooncakes 所需 `moon.mod` 元数据。项目 MoonBit 源码非注释代码已超过 4k 行，测试覆盖解析、审计、评分、报告、模板、规则目录和 diff。本次计划是在 GitHub 公开仓库和 Mooncakes 发布后形成 `0.1.0` 版本，并将项目作为可复用的 MoonBit Web 安全策略分析基础库持续维护。

本次开发新增并完成了 source expression 分类、CSP 指令目录、审计规则目录、策略评分、加固建议、多格式报告、23 个策略模板和功能测试，使项目从解析器原型扩展为可用于发布前检查和策略评审的基础工具库。

## 技术路线与预期目标

技术路线为“策略文本解析 -> 指令与 source expression 结构化 -> 规则审计与 fallback 计算 -> 评分、建议、报告和 diff 输出”。所有核心路径使用 MoonBit 原生实现，采用确定性纯函数和 `Result` 错误返回，不访问网络、不执行浏览器代码。预期目标是提供一个可在 MoonBit WebAssembly 工程和 CI 中直接复用的 CSP 基础库，并通过稳定 API、测试、示例、文档和版本发布形成持续维护价值。

## 原创或参考说明

本项目为原创 MoonBit 实现，不移植第三方源码，不包含来源不明素材或私有代码。测试数据均为项目内自制 CSP 字符串。项目采用 Apache-2.0 许可证，第三方合规说明见 `THIRD_PARTY.md`。

开发过程中可以使用 AI 辅助接口设计、测试补全、文档整理和问题排查；最终代码、测试结果、功能边界、准确性、可维护性和许可证合规由项目维护者负责。仓库不包含未经授权的私有代码、闭源代码或来源不明的生成内容。

## 验收支撑材料

- README：说明项目用途、主要功能、使用方法、运行命令和 Mooncakes 发布流程；
- 可运行示例：`cmd/main`，可通过 `moon run cmd/main` 执行；
- 测试记录：`docs/testing-record.md`；
- 设计说明：`docs/design.md`；
- 调研记录：`docs/research.md`；
- 开发记录：`docs/development-record.md`；
- 发布记录：`docs/release.md`；
- CI 配置：`.github/workflows/ci.yml`；
- 第三方和许可证说明：`LICENSE`、`THIRD_PARTY.md`。
