fix(server): trust wildcard CORS origins (#10144)

This commit is contained in:
chenos
2026-07-21 22:10:09 +08:00
committed by GitHub
parent ed114542c2
commit 26c34f5967
3 changed files with 15 additions and 7 deletions
+1 -6
View File
@@ -41,17 +41,12 @@ export function createResourcer(options: ApplicationOptions) {
function isWhitelistedCorsOrigin(ctx: any) {
const origin = ctx.get('origin');
const whitelist = getCorsWhitelist();
if (!origin) {
return false;
}
if (!whitelist) {
return isTrustedOrigin(ctx, origin);
}
return whitelist.has('*') || whitelist.has(origin);
return isTrustedOrigin(ctx, origin);
}
export function resolveCorsOrigin(ctx: any) {
@@ -48,6 +48,15 @@ describe('cors utils', () => {
expect(isTrustedOrigin(ctx, 'https://evil.example')).toBe(false);
});
it('trusts every origin when CORS_ORIGIN_WHITELIST contains an asterisk', () => {
process.env.CORS_ORIGIN_WHITELIST = '*';
const ctx = createContext({ host: 'example.com' });
expect(isTrustedOrigin(ctx, 'https://trusted.example')).toBe(true);
expect(isTrustedOrigin(ctx, 'https://evil.example')).toBe(true);
});
it('resolves forwarded request origins and referer origins', () => {
const ctx = createContext(
{
+5 -1
View File
@@ -53,5 +53,9 @@ export function isTrustedOrigin(ctx: OriginContext, origin: string) {
if (isSameOrigin(ctx, origin)) {
return true;
}
return getCorsWhitelist()?.has(origin) || false;
const whitelist = getCorsWhitelist();
if (!whitelist) {
return false;
}
return whitelist.has('*') || whitelist.has(origin);
}