mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 08:28:31 +00:00
refactor+fix v1.10.0: аудит — гонки записи (asyncio.Lock, атомарный rev), точечный layout/update вместо layout/set (анти last-writer-wins), layout/delete, safeUrl против XSS в link/pdfs, fetchWithAuth, KEY_HASS, стриминговый лимит upload, модульность (styles/types/devices), динамические пространства в GUI-редакторе, чистка мёртвого кода (file/set, GROUP_TITLES)
This commit is contained in:
@@ -98,3 +98,17 @@ export function declump(
|
||||
if (!moved) break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Безопасный URL для <a href>: допускаются только http(s) и относительные пути.
|
||||
* Отсекает javascript:, data: и прочие опасные схемы (XSS через конфиг).
|
||||
*/
|
||||
export function safeUrl(url: string | null | undefined): string | null {
|
||||
if (!url) return null;
|
||||
const u = url.trim();
|
||||
if (/^(https?:)?\/\//i.test(u) || u.startsWith('/') || /^[\w./#?=&%~-]+$/i.test(u)) {
|
||||
if (/^[a-z][\w+.-]*:/i.test(u) && !/^https?:/i.test(u)) return null;
|
||||
return u;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user