用途
astrofy-security 是一个面向 Astro 项目的安全审查技能,重点在于审查执行边界(fronteiras de execução)。它帮助定位外部输入及其消费者,检查 HTML 序列化、set:html 的使用以及 MDX 的来源,排查公开配置中的凭据和关键依赖,并对已证实的问題施加限定范围内的修复,同时记录审查的覆盖范围。
主要能力
- 读取并审查外部输入、set:html、MDX、脚本以及客户端/服务端边界。
- 当路径与示例不同时,使用 .astrofy/config/paths.json 中定义的路径。
- 在应用在线文档中的 API 之前,先核对 lockfile 和 node_modules 中安装的版本。
- 追踪入口直到其渲染点,区分文本转义、URL 允许和 HTML 净化。
- 仅记录不含凭据的样本。
- 定位外部输入及其消费者,检查 HTML 序列化、set:html 用法和 MDX 来源。
- 在公开配置中查找凭据,并检查相关依赖。
- 修复已证实的发生点,并记录审查的覆盖范围。
使用方式
在接受 HTML、URL 或外部 MDX 内容之前,按以下特定顺序构建 Astro 7 的执行边界表(输入、转换、目标):
- 将每个外部输入追踪到文本、属性、set:html、JSON-LD 或 MDX。
- 根据目标对文本进行转义、验证 URL 并净化 HTML。
- 将机密与 PUBLIC_ 值分开,并确认客户端 bundle。
- 演练标签、属性、协议和脚本闭合的 payload。
- 在无会话以及无资源权限用户的情况下调用端点和 Actions,检查基于 cookie 认证的变更操作的 CSRF 保护。
- 在刷新缓存后,用两个会话与匿名访客对比私有响应,检查生成的 HTML 和资源中是否有数据越过服务端边界。
对现有实现的变更:修复受影响的消费者并保持契约有效。在检查期间不要编译未知的 MDX,也不要导入可执行配置来列出字段。
验证标准:包含脚本闭合的内容不应执行代码;来自外部的 HTML 必须经过所采用的净化策略。修复需具备可复现的用例。报告不暴露凭据,也不声称通过自动分析完成了完整审计。
可用命令示例:
astrofy check --rule config.secrets
在实现之前查阅该领域的 API 和规则,在核对输出时查阅验证场景。
适用场景
- 需要对 Astro 项目进行安全审查,尤其是涉及外部 HTML、URL 或 MDX 内容渲染时。
- 需要排查 set:html 用法、HTML 序列化、MDX 来源或客户端/服务端边界风险时。
- 需要检查公开配置和客户端 bundle 中是否泄漏机密信息时。
- 需要验证端点和 Actions 在无会话或无权限用户下的访问控制,以及基于 cookie 的变更操作的 CSRF 保护时。
- 需要检查缓存刷新后私有数据是否越过服务端边界时。
限制
- 报告不暴露凭据,也不声明通过自动分析完成了完整审计。
- 在检查期间不得编译未知的 MDX,也不得导入可执行配置来列出字段。
- 修复应限定在已证实的问题范围内,并保持现有契约有效。
- 修复需附带可复现的用例。
- 关于定价、付费方式、支持平台或具体效果等信息,资料暂未提供。