o2o-castad-frontend/src/utils/url.ts

16 lines
557 B
TypeScript

/**
* 사용자·크롤링에서 온 URL을 링크로 그리기 전에 검증한다.
*
* `official_site_url`은 업체가 직접 입력하거나 네이버 플레이스에서 긁어온 값이라
* `javascript:` 같은 스킴이 섞이면 href에 그대로 실려 XSS가 된다. http/https만 통과시킨다.
*/
export const isSafeHttpUrl = (url?: string | null): boolean => {
if (!url) return false;
try {
const parsed = new URL(url);
return parsed.protocol === 'http:' || parsed.protocol === 'https:';
} catch {
return false;
}
};