Validate SSO redirect URLs before setting auth token

This commit is contained in:
Mike Cao
2026-06-02 17:26:48 -07:00
parent 8bc49a29e3
commit d44592ddb5
+11 -1
View File
@@ -4,6 +4,12 @@ import { useRouter, useSearchParams } from 'next/navigation';
import { useEffect } from 'react';
import { setClientAuthToken } from '@/lib/client';
function isSafeRedirectUrl(url: string): boolean {
// Must start with a single slash (relative path)
// Block protocol handlers (javascript:, data:, etc.) and protocol-relative URLs (//)
return url.startsWith('/') && !url.startsWith('//') && !url.includes(':');
}
export function SSOPage() {
const router = useRouter();
const search = useSearchParams();
@@ -12,8 +18,12 @@ export function SSOPage() {
useEffect(() => {
if (url && token) {
setClientAuthToken(token);
if (!isSafeRedirectUrl(url)) {
router.push('/');
return;
}
setClientAuthToken(token);
router.push(url);
}
}, [router, url, token]);