Hier wurde bereits eine kurze Antwort gegeben: <div [innerHTML]="yourHtml">
Bindung verwenden.
Der Rest der hier genannten Ratschläge kann jedoch irreführend sein. Angular verfügt über einen integrierten Desinfektionsmechanismus, wenn Sie an solche Eigenschaften binden. Da Angular keine dedizierte Desinfektionsbibliothek ist, ist es gegenüber verdächtigen Inhalten übereifrig, kein Risiko einzugehen. Beispielsweise werden alle SVG-Inhalte in leere Zeichenfolgen bereinigt.
Möglicherweise hören Sie Ratschläge, Ihren Inhalt zu "bereinigen", indem Sie ihn DomSanitizer
mit bypassSecurityTrustXXX
Methoden als sicher markieren . Es gibt auch Vorschläge, Pipe zu verwenden, und diese Pipe wird oft genannt safeHtml
.
All dies ist irreführend, weil es tatsächlich die Desinfektion umgeht und nicht die Bereinigung Ihrer Inhalte. Dies kann ein Sicherheitsrisiko sein, denn wenn Sie dies jemals für vom Benutzer bereitgestellte Inhalte oder für etwas tun, bei dem Sie sich nicht sicher sind, öffnen Sie sich für Angriffe mit bösartigem Code.
Wenn Angular durch die integrierte Bereinigung etwas entfernt, das Sie benötigen, können Sie die eigentliche Bereinigung an eine dedizierte Bibliothek delegieren, die für diese Aufgabe geeignet ist, anstatt sie zu deaktivieren. Zum Beispiel - DOMPurify.
Ich habe eine Wrapper-Bibliothek dafür erstellt, damit sie problemlos mit Angular verwendet werden kann:
https://github.com/TinkoffCreditSystems/ng-dompurify
Es hat auch eine Pipe, um HTML deklarativ zu bereinigen:
<div [innerHtml]="value | dompurify"></div>
Der Unterschied zu den hier vorgeschlagenen Rohren besteht darin, dass sie tatsächlich die Desinfektion über DOMPurify durchführen und daher für SVG funktionieren.
Eine Sache, die Sie beachten sollten, ist, dass DOMPurify sich hervorragend zum Bereinigen von HTML / SVG eignet, nicht jedoch von CSS. So können Sie Angulars CSS-Desinfektionsmittel für CSS bereitstellen:
import {NgModule, ɵ_sanitizeStyle} from '@angular/core';
import {SANITIZE_STYLE} from '@tinkoff/ng-dompurify';
@NgModule({
// ...
providers: [
{
provide: SANITIZE_STYLE,
useValue: ɵ_sanitizeStyle,
},
],
// ...
})
export class AppModule {}
Es ist ein internes ɵ
Präfix - hense , aber so verwendet es das Angular-Team sowieso auch für seine eigenen Pakete. Diese Bibliothek funktioniert auch für Angular Universal- und serverseitige Renedring-Umgebungen.