mirror of
https://github.com/yusufipk/OpenFrame.git
synced 2026-09-11 09:36:08 +00:00
refactor(request-origin): remove unused origin retrieval functions to enhance security
This commit is contained in:
+4
-25
@@ -16,35 +16,14 @@ function getConfiguredOrigins(): string[] {
|
|||||||
.filter((value): value is string => value !== null);
|
.filter((value): value is string => value !== null);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getForwardedOrigin(request: NextRequest): string | null {
|
|
||||||
const forwardedProto = request.headers.get('x-forwarded-proto')?.split(',')[0]?.trim();
|
|
||||||
const forwardedHost = request.headers.get('x-forwarded-host')?.split(',')[0]?.trim();
|
|
||||||
|
|
||||||
if (!forwardedProto || !forwardedHost) return null;
|
|
||||||
return normalizeOrigin(`${forwardedProto}://${forwardedHost}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getHostHeaderOrigin(request: NextRequest): string | null {
|
|
||||||
const host = request.headers.get('host')?.split(',')[0]?.trim();
|
|
||||||
if (!host) return null;
|
|
||||||
|
|
||||||
const forwardedProto = request.headers.get('x-forwarded-proto')?.split(',')[0]?.trim();
|
|
||||||
const protocol = forwardedProto || request.nextUrl.protocol.replace(':', '');
|
|
||||||
if (!protocol) return null;
|
|
||||||
|
|
||||||
return normalizeOrigin(`${protocol}://${host}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getAllowedRequestOrigins(request: NextRequest): Set<string> {
|
export function getAllowedRequestOrigins(request: NextRequest): Set<string> {
|
||||||
const origins = new Set<string>();
|
const origins = new Set<string>();
|
||||||
|
|
||||||
|
// Only trust server-side computed origin and operator-configured origins.
|
||||||
|
// x-forwarded-host / x-forwarded-proto are client-controlled and must never
|
||||||
|
// be used to build the allowed-origin set (SSRF / origin-spoof vector).
|
||||||
origins.add(request.nextUrl.origin);
|
origins.add(request.nextUrl.origin);
|
||||||
|
|
||||||
const forwardedOrigin = getForwardedOrigin(request);
|
|
||||||
if (forwardedOrigin) origins.add(forwardedOrigin);
|
|
||||||
|
|
||||||
const hostHeaderOrigin = getHostHeaderOrigin(request);
|
|
||||||
if (hostHeaderOrigin) origins.add(hostHeaderOrigin);
|
|
||||||
|
|
||||||
for (const configuredOrigin of getConfiguredOrigins()) {
|
for (const configuredOrigin of getConfiguredOrigins()) {
|
||||||
origins.add(configuredOrigin);
|
origins.add(configuredOrigin);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user