feat: Add URL safety check to prevent rendering iframes with non-HTTP/HTTPS protocols.

This commit is contained in:
Yusuf İpek
2026-02-22 09:56:18 +03:00
parent 0f24bcfe6c
commit 10164069dd
@@ -89,6 +89,15 @@ function formatTime(seconds: number): string {
return `${mins}:${secs.toString().padStart(2, '0')}`; return `${mins}:${secs.toString().padStart(2, '0')}`;
} }
const isSafeUrl = (url: string) => {
try {
const parsed = new URL(url);
return parsed.protocol === 'http:' || parsed.protocol === 'https:';
} catch {
return false;
}
};
export default function CompareVersionsPage() { export default function CompareVersionsPage() {
const params = useParams(); const params = useParams();
const searchParams = useSearchParams(); const searchParams = useSearchParams();
@@ -573,14 +582,14 @@ export default function CompareVersionsPage() {
onRegister={registerPlayer} onRegister={registerPlayer}
onUnregister={unregisterPlayer} onUnregister={unregisterPlayer}
/> />
) : ( ) : isSafeUrl(version.originalUrl) ? (
<iframe <iframe
src={version.originalUrl} src={version.originalUrl}
className="w-full h-full pointer-events-none" className="w-full h-full pointer-events-none"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen allowFullScreen
/> />
)} ) : null}
{/* Play/pause overlay */} {/* Play/pause overlay */}
<div <div