Firebase / React - 防止主机 Header 攻击
Firebase / React - Prevent Host Header attack
我正在努力修复渗透测试中的一些安全漏洞。有问题的漏洞是“Web 服务器易受 HTTP 主机 Header 攻击”,建议为“...主机请求 header 是用户指定的,不应被信任。确保严格的白色列表用于验证主机 header."
我目前正在使用 React.js 作为我的前端框架和 Firebase for Functions (Node.js)、托管、身份验证、存储和分析。从我的一般互联网搜索中,我不明白我应该在哪里或什至改变什么来补救这个漏洞?我收集到我可能在我的服务器调用中使用了使用原始“HOST”变量的代码,但我没有在我的代码中的任何地方看到它被显式访问。我确实有一个 functions.https.onCall()
函数,它可能在内部使用 HOST。显然有很多 onCreate()
、onUpdate()
等调用。也许这是我在幕后使用的另一个函数或库?
防止主机 header 攻击 Firebase 的解决方案是什么?
Firebase 函数 package.json:
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase emulators:start --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "10"
},
"main": "lib/index.js",
"dependencies": {
"@google-cloud/firestore": "^4.10.0",
"@sendgrid/mail": "^7.4.7",
"@types/nodemailer": "^6.4.0",
"@types/uuid": "^8.3.0",
"firebase-admin": "^9.5.0",
"firebase-functions": "^3.16.0",
"order-id": "^2.1.1",
"papaparse": "^5.3.0",
"request": "^2.88.2",
"uuid": "^8.3.2"
},
"devDependencies": {
"firebase-functions-test": "^0.2.3",
"tslint": "^5.12.0",
"typescript": "^3.9.9"
},
"private": true
}
如果您使用的是 Firebase 托管,则该报告可能指的是 Host
header 用于将请求路由到适当站点的事实。这是按预期工作的——因为 Firebase 托管是一项 multi-tenant 服务,Host
header 提供必要的信息来消除站点之间的歧义。
您无需采取任何行动 - Firebase 已经针对已知网站仔细验证了 header。
我正在努力修复渗透测试中的一些安全漏洞。有问题的漏洞是“Web 服务器易受 HTTP 主机 Header 攻击”,建议为“...主机请求 header 是用户指定的,不应被信任。确保严格的白色列表用于验证主机 header."
我目前正在使用 React.js 作为我的前端框架和 Firebase for Functions (Node.js)、托管、身份验证、存储和分析。从我的一般互联网搜索中,我不明白我应该在哪里或什至改变什么来补救这个漏洞?我收集到我可能在我的服务器调用中使用了使用原始“HOST”变量的代码,但我没有在我的代码中的任何地方看到它被显式访问。我确实有一个 functions.https.onCall()
函数,它可能在内部使用 HOST。显然有很多 onCreate()
、onUpdate()
等调用。也许这是我在幕后使用的另一个函数或库?
防止主机 header 攻击 Firebase 的解决方案是什么?
Firebase 函数 package.json:
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase emulators:start --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "10"
},
"main": "lib/index.js",
"dependencies": {
"@google-cloud/firestore": "^4.10.0",
"@sendgrid/mail": "^7.4.7",
"@types/nodemailer": "^6.4.0",
"@types/uuid": "^8.3.0",
"firebase-admin": "^9.5.0",
"firebase-functions": "^3.16.0",
"order-id": "^2.1.1",
"papaparse": "^5.3.0",
"request": "^2.88.2",
"uuid": "^8.3.2"
},
"devDependencies": {
"firebase-functions-test": "^0.2.3",
"tslint": "^5.12.0",
"typescript": "^3.9.9"
},
"private": true
}
如果您使用的是 Firebase 托管,则该报告可能指的是 Host
header 用于将请求路由到适当站点的事实。这是按预期工作的——因为 Firebase 托管是一项 multi-tenant 服务,Host
header 提供必要的信息来消除站点之间的歧义。
您无需采取任何行动 - Firebase 已经针对已知网站仔细验证了 header。