跳转到正文
报告库
用途分类 / 其他用途

Firebase Hosting Basics Skill 安全审计

作者说它能做什么(原文)

>-

第三方安全检查结论

先别安装或运行

已检查文件
3
发现的风险
3
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 1 项风险
中风险

命令自动运行未固定版本的最新 npm 包

原文依据:3 处
发现了什么

所有命令都使用 `npx -y firebase-tools@latest`。`latest` 会随发布者更新而变化,`-y` 会自动接受安装,因此实际执行的代码未被固定到已审核版本。

为什么需要注意

如果上游包、发布账户或新版本被破坏,运行命令可能在用户权限下执行恶意代码,读取本地文件或 Firebase 凭据,并影响已登录的云项目。

这些是可直接运行的命令;`npx -y` 会跳过安装确认,`@latest` 又不固定版本,因此用户每次可能下载并执行不同版本的 Firebase CLI。该做法符合临时使用官方 CLI 的常见方式,但会把本机及 Firebase 凭据暴露给当时由 npm 提供的最新包。用户可要求作者固定并审核具体版本,或限制自动安装和网络访问。

SKILL.md:63来自说明文档打开原文件
```bashnpx -y firebase-tools@latest emulators:start --only hosting```
查看另外 2 个位置
references/deploying.md:7来自说明文档打开原文件
```bashnpx -y firebase-tools@latest deploy --only hosting```
references/deploying.md:20来自说明文档打开原文件
```bashnpx -y firebase-tools@latest hosting:channel:deploy CHANNEL_ID```
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。未发现风险
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
高风险

正式发布命令缺少目标项目核验和发布前确认

原文依据:2 处
发现了什么

文档直接给出向默认站点发布的命令,也给出把预览频道克隆到 `live` 的命令,但没有要求先显示并核对当前 Firebase 项目、目标站点、差异或用户确认。

为什么需要注意

如果 CLI 当前选中了错误项目,或代理把示例值替换错误,用户可能覆盖真实网站的内容和路由;错误页面可立即对公众可见,并可能中断线上服务。

文档明确要求向默认正式站点部署,并提供把指定预览频道直接克隆到 `live` 的命令;所示流程未包含核对当前项目、目标站点或发布内容,也未设置确认步骤。若代理在错误的已登录项目中照做,可能覆盖公开站点。用户可要求执行前展示项目、站点和变更并取得明确确认,同时先使用预览频道。

references/deploying.md:5来自说明文档打开原文件
To deploy your Hosting content and configuration to your live site:```bashnpx -y firebase-tools@latest deploy --only hosting```This deploys to your default sites (`PROJECT_ID.web.app` and`PROJECT_ID.firebaseapp.com`).
查看另外 1 个位置
references/deploying.md:35来自说明文档打开原文件
## Cloning to LiveYou can promote a version from a preview channel to your live channel withoutrebuilding.```bashnpx -y firebase-tools@latest hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:live```
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

重写示例把全局通配规则放在 API 和容器规则之前

原文依据:2 处
发现了什么

示例的第一条重写规则用 `**` 匹配所有路径,后面才列出 `/api/**` 和 `/container/**`。在采用首个匹配规则的配置语义下,前面的全局规则会抢先处理后两类请求。

为什么需要注意

如果用户照抄该顺序,API 或 Cloud Run 请求可能返回 SPA 的 `index.html`,导致接口失效、错误缓存或线上功能中断。

这段证据能说明什么

示例确实先列出全局 `**` 重写,再列出 `/api/**` 和 `/container/**`,因此若 Firebase 按“首个匹配即生效”处理,后两项可能不可达。但所给来源没有说明重写的匹配优先级,也没有显示该示例会被自动写入或部署;仅凭顺序无法确认实际控制流。用户可要求作者引用 Firebase 的优先级规则并提供路由测试结果。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
references/configuration.md:42来自说明文档打开原文件
```json"rewrites": [  {    "source": "**",    "destination": "/index.html"  },  {    "source": "/api/**",    "function": "apiFunction"  },  {    "source": "/container/**",    "run": {      "serviceId": "helloworld",      "region": "us-central1"    }  }]```
查看另外 1 个位置
references/configuration.md:37来自说明文档打开原文件
### `rewrites` (Optional)Serve the same content for multiple URLs, useful for SPAs or Dynamic Content.
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

3 个说明模块

该 Skill 面向经典 Firebase Hosting,指导配置静态目录、重定向、重写和响应头,并明确排除 App Hosting、Auth 和 Firestore 等功能。

查看原文
SKILL.md:2来自说明文档打开原文件
---name: firebase-hosting-basicsdescription: >-  Deploys and configures classic Firebase Hosting for static websites, single-page apps (SPAs), and microservices. Use when deploying static sites/SPAs, setting up custom domains, configuring firebase.json hosting settings (redirects, rewrites, headers, multi-site), or managing preview channels. Don't use for Firebase App Hosting (Next.js/SSR), Auth, Firestore queries/rules, Data Connect, or Crashlytics.metadata:

它通过 Firebase CLI 执行本地模拟、预览发布和正式发布;提供的命令会使用运行环境中已有的 Firebase 登录身份及当前项目配置。

查看原文
SKILL.md:61来自说明文档打开原文件
To test your app locally:```bashnpx -y firebase-tools@latest emulators:start --only hosting```
references/deploying.md:3来自说明文档打开原文件
## Standard DeploymentTo deploy your Hosting content and configuration to your live site:```bashnpx -y firebase-tools@latest deploy --only hosting```
references/deploying.md:18来自说明文档打开原文件
### Deploy to a Preview Channel```bashnpx -y firebase-tools@latest hosting:channel:deploy CHANNEL_ID```

配置中的 `public` 字段决定整个待发布目录;示例同时排除 Firebase 配置、隐藏文件和 `node_modules`。

查看原文
references/configuration.md:8来自说明文档打开原文件
### `public` (Required)Specifies the directory to deploy to Firebase Hosting.```json"hosting": {  "public": "public"}```
references/configuration.md:98来自说明文档打开原文件
{  "hosting": {    "public": "dist",    "ignore": [      "firebase.json",      "**/.*",      "**/node_modules/**"    ],    "rewrites": [

预览频道默认七天过期,也可将预览版本直接克隆到正式频道而不重新构建。

查看原文
references/deploying.md:27来自说明文档打开原文件
### ExpirationChannels expire after 7 days by default. To set a different expiration:```bashnpx -y firebase-tools@latest hosting:channel:deploy CHANNEL_ID --expires 1d```
references/deploying.md:35来自说明文档打开原文件
## Cloning to LiveYou can promote a version from a preview channel to your live channel withoutrebuilding.```bashnpx -y firebase-tools@latest hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:live```
从这里开始 · 工作说明SKILL.md
firebase-hosting-basics
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

2 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录3 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • references/configuration.md已纳入全文
  • references/deploying.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • references/configuration.md配套文件
  • references/deploying.md配套文件

代码和说明中提到的操作

运行命令
SKILL.md:63来自说明文档打开原文件
```bashnpx -y firebase-tools@latest emulators:start --only hosting
references/deploying.md:7来自说明文档打开原文件
```bashnpx -y firebase-tools@latest deploy --only hosting
references/deploying.md:20来自说明文档打开原文件
```bashnpx -y firebase-tools@latest hosting:channel:deploy CHANNEL_ID
安装其他软件包
SKILL.md:64来自说明文档打开原文件
```bashnpx -y firebase-tools@latest emulators:start --only hosting```
references/deploying.md:8来自说明文档打开原文件
```bashnpx -y firebase-tools@latest deploy --only hosting```
references/deploying.md:21来自说明文档打开原文件
```bashnpx -y firebase-tools@latest hosting:channel:deploy CHANNEL_ID```
连接外部网站
SKILL.md:67来自说明文档打开原文件
This serves your app at `http://localhost:5000` by default.
读取了多少行
233
文件校验值(用于核对版本)
defc58cc9cd134d87ded73d9cb7d18e602e9d7b04081bca8a7ecfb9605ced482