flawopen.com/Angular-Sicherheit/Angular
Angular-XSS-Schutz: sichere Standards und Bypass-APIs
Angular behandelt Werte in Template-Bindings als nicht vertrauenswürdig: Interpolation escaped Text, HTML- und URL-Bindings werden kontextabhängig bereinigt. Die gefährliche Grenze ist explizites Vertrauen: bypassSecurityTrust* weist Angular an, die normale Bereinigung dieses Werts zu überspringen. Verwende die API nur, nachdem du den Wert für den genauen Sicherheitskontext validiert und erstellt hast, in dem er eingesetzt wird.
this.safeHtml = this.sanitizer
.bypassSecurityTrustHtml(comment);
// <div [innerHTML]="safeHtml"></div>
<div>{{ comment }}</div>
// Interpolation escaped Markup als Text
Was Angular bereinigt — und was nicht möglich ist
Angular escaped interpolierten Text und bereinigt nicht vertrauenswürdige Werte in HTML- und URL-Kontexten. [innerHTML] entfernt beispielsweise gefährliches Markup und erhält sicheres HTML; normale Interpolation interpretiert Markup gar nicht. Eine Resource-URL (etwa die Quelle eines iframes mit ausführbarem Inhalt) kann nicht allgemein bereinigt werden, da sie beliebigen Code bezeichnen kann. Übergib niemals angreiferkontrollierte Werte an bypassSecurityTrustHtml, bypassSecurityTrustUrl, bypassSecurityTrustResourceUrl oder verwandte Bypass-APIs: Sie erklären den Wert in einem bestimmten Kontext für sicher und überspringen die Bereinigung. Erzeuge für legitime Einbettungen die URL unmittelbar vor dem Vertrauen aus einem festen Ursprung und einer validierten Kennung.
Bypass-APIs und DOM-Sinks prüfen
grep -rn "bypassSecurityTrust" --include="*.ts" .Häufige Fragen
Defense-in-Depth mit CSP und Trusted Types
Verwenden Sie Content Security Policy (CSP) und erzwingen Sie Trusted Types als zusätzliche Schutzschicht neben sicheren Angular-Bindings. Angular benötigt die Trusted-Types-Richtlinie angular#unsafe-bypass, wenn eine Anwendung DomSanitizer.bypassSecurityTrust* aufruft. Entfernen Sie solche Aufrufe nach Möglichkeit; andernfalls erfassen Sie jede Aufrufstelle und vertrauen Sie nur Werten, die für ihren genauen Kontext validiert wurden.
Nein. Template-Bindings erhalten Framework-Schutz, direkte DOM-APIs, ElementRef und DOM-Bibliotheken von Drittanbietern können ihn jedoch umgehen. Bevorzuge Template-Bindings, prüfe diese Sinks separat und markiere Eingaben nur dann als vertrauenswürdig, wenn sie für den genauen Sicherheitskontext validiert wurden.