/** * Validates that a URL is safe for redirection. * Only allows HTTP and HTTPS protocols to prevent XSS attacks. * * @param url - The URL string to validate * @throws Error if the URL has an unsafe protocol */ export function validateRedirectUrl(url: string): void { try { const parsedUrl = new URL(url) if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') throw new Error('Authorization URL must be HTTP or HTTPS') } catch (error) { if ( error instanceof Error && error.message === 'Authorization URL must be HTTP or HTTPS' ) throw error // If URL parsing fails, it's also invalid throw new Error(`Invalid URL: ${url}`) } }