mirror of
https://github.com/yusufipk/OpenFrame.git
synced 2026-09-12 01:46:08 +00:00
feat: Add URL safety check to prevent rendering iframes with non-HTTP/HTTPS protocols.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user