typescript / expert
Snippet
Fälschungssichere Zugriffssteuerung durch Branded WeakMap Kapselung
Die Kombination aus nominalen Brand-Typen in TypeScript mit privaten ECMAScript-Feldern (`#`) und statischen WeakMaps erzeugt kapazitätsbasierte Zugriffs-Token. Der Zugriff auf sensible interne Zustände wird statisch durch strukturelle Typinkompatibilität gesteuert und zur Laufzeit privat erzwungen.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
declare const CapabilityBrand: unique symbol;type CapabilityToken<T extends string> = string & { readonly [CapabilityBrand]: T };class SecureVault<TData> {#secret: TData;static #accessKeys = new WeakMap<object, CapabilityToken<"VAULT_ACCESS">>();constructor(data: TData, token: CapabilityToken<"VAULT_ACCESS">) {this.#secret = data;SecureVault.#accessKeys.set(this, token);}readData(token: CapabilityToken<"VAULT_ACCESS">): TData {if (SecureVault.#accessKeys.get(this) !== token) {throw new Error("Unauthorized vault access attempt");}return this.#secret;}}
Erklärung
1
declare const CapabilityBrand: unique symbol;
Deklariert ein eindeutiges Symbol zur Erstellung nominaler/gebrandeter Typen.
2
type CapabilityToken<T extends string> = string & { readonly [CapabilityBrand]: T };
Konstruiert einen gebrandeten String-Typen, der beliebige Zuweisungen von Standard-Strings verhindert.
3
class SecureVault<TData> {
Defines a generic secure container class.
4
#secret: TData;
Deklariert ein privates ECMAScript-Feld (`#`), das von außerhalb der Instanz nicht zugänglich ist.
5
static #accessKeys = new WeakMap<object, CapabilityToken<"VAULT_ACCESS">>();
Speichert Token-Zuordnungen privat über Instanzen hinweg ohne Speicherlecks.
6
readData(token: CapabilityToken<"VAULT_ACCESS">): TData {
Erfordert einen gültigen gebrandeten Token-Parameter zum Entsperren internen Daten.