Compare commits

...
Author SHA1 Message Date
shamoon eeda1563fd Update middleware.js 2025-01-27 16:01:44 -08:00
shamoon ee7be33fa1 Security: support host header validation 2025-01-27 15:02:27 -08:00
shamoon e6a821ecc3 Bind all addreses in docker container 2025-01-27 10:50:44 -08:00
2 changed files with 21 additions and 2 deletions

No files matched your search

+3 -2
View File
@@ -41,7 +41,7 @@ LABEL org.opencontainers.image.documentation='https://github.com/gethomepage/hom
LABEL org.opencontainers.image.source='https://github.com/gethomepage/homepage'
LABEL org.opencontainers.image.licenses='Apache-2.0'
ENV NODE_ENV production
ENV NODE_ENV=production
WORKDIR /app
@@ -56,7 +56,8 @@ COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
RUN apk add --no-cache su-exec
ENV PORT 3000
ENV HOSTNAME=::
ENV PORT=3000
EXPOSE $PORT
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \
+18
View File
@@ -0,0 +1,18 @@
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"])
: [];
console.log("Host: ", host, "Allowed Hosts: ", allowedHosts);
if (allowedHosts.length && !(host || allowedHosts.includes(host))) {
return new NextResponse("Invalid Host header", { status: 400 });
}
return NextResponse.next();
}
export const config = {
matcher: "/api/:path*",
};