typescript / expert
Snippet
Objekt-Kapazitätssicherung mittels privater Felder und Brand-Token
Dieses Beispiel demonstriert das Object-Capability-Muster unter Verwendung echter privater ECMAScript-Felder (#feld). Da Token außerhalb ihrer Deklarationsklasse weder gefälscht noch gelesen werden können, sind Sicherheitsprüfungen sowohl zur Kompilierzeit als auch zur Laufzeit unmanipulierbar.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class AccessToken {#scope: string;constructor(scope: string) {this.#scope = scope;}static grant(scope: string): AccessToken {return new AccessToken(scope);}}class SecureVault<T> {#data: T;constructor(data: T) {this.#data = data;}public read(token: AccessToken): T {if (!(token instanceof AccessToken)) {throw new TypeError("Unauthorized access attempt");}return this.#data;}}
Erklärung
1
#scope: string;
Deklariert ein echtes privates ES-Feld, auf das außerhalb der Klasse AccessToken nicht zugegriffen werden kann.
2
static grant(scope: string): AccessToken
Fabrikmethode als einziger kontrollierter Weg zur Erstellung von Zugriffsberechtigungen.
3
if (!(token instanceof AccessToken))
Laufzeitprüfung zur Validierung des Zertifikats vor der Freigabe gekapselter Daten.