Security: support host header validation

This commit is contained in:
shamoon 2025-01-27 00:45:51 -08:00
parent e6a821ecc3
commit ee7be33fa1

17
src/middleware.js Normal file
View File

@ -0,0 +1,17 @@
import { NextResponse } from "next/server";
export function middleware(req) {
// Check the Host header, if HOMEPAGE_ALLOWED_HOSTS is set
const host = req.headers.get("host");
const allowedHosts = process.env.HOMEPAGE_ALLOWED_HOSTS
? process.env.HOMEPAGE_ALLOWED_HOSTS.split(",").concat(["localhost:3000"])
: [];
if (allowedHosts.length && !(host || allowedHosts.includes(host))) {
return new NextResponse("Invalid Host header", { status: 400 });
}
return NextResponse.next();
}
export const config = {
matcher: "/api/:path*",
};