typescript / intermediate
Snippet
Erzwingung von Sicherheitsgrenzen mit Branded-String-Typen
Branded Types schaffen nominale Typsicherheit über strukturellen String-Primitiven. Diese Prüfung zur Kompilierzeit verhindert das Übergeben unüberprüfter Roh-Strings an sicherheitskritische Operationen.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
declare const brand: unique symbol;type Branded<T, B> = T & { [brand]: B };type SanitizedHtml = Branded<string, "SanitizedHtml">;function sanitizeInput(rawInput: string): SanitizedHtml {const escaped = rawInput.replace(/</g, "<").replace(/>/g, ">");return escaped as SanitizedHtml;}function renderComponent(html: SanitizedHtml): void {// Safe to render without XSS vulnerability risk}
Erklärung
1
declare const brand: unique symbol;
Deklariert ein eindeutiges Symbol für nominale Branding-Tags ohne Laufzeit-Overhead.
2
type Branded<T, B> = T & { [brand]: B };
Erstellt einen Schnitt-Typ, der einen Basistyp mit einem nominalen Tag versieht.
3
function sanitizeInput(rawInput: string): SanitizedHtml {
Bereinigt unsichere Eingabe-Strings und sichert den Branded-Rückgabetyp zu.
4
function renderComponent(html: SanitizedHtml): void {
Beschränkt Parameter strikt auf bereits bereinigte Strings und verhindert Sicherheitslücken.