Ich habe zwei Angular 2 Apps: eine für Endbenutzer und eine für eine Redaktion. Beide sind in Javascript geschrieben.Sicheres Rendern von Benutzerinhalten in Angular2 App
Die Endbenutzer-App ist im Grunde eine WhatsApp-ähnliche Chat-Ansicht, in der ein Benutzer mit der Redaktion 1-on-1 chatten kann. Die redaktionelle App zeigt eine Liste aller Konversationen an und hat für jede Konversation eine WhatsApp-ähnliche Chat-Ansicht.
So weit, so gut. Alles funktioniert gut. Ich habe jedoch eine Frage zur Sicherheit. In einer ersten Version wird der Inhalt einer Nachricht in der Redaktion App wurde mit der innerHTML- Aussage gemacht:
<div [innerHTML]="message.data.text"></div>
Wenn ein Benutzer Mißbrauch des Chat-Eingabefeld, aber, und Typen in
Nachricht
, diese HTML-Anweisung gerendert, was wir nicht wollen (weil es zu bösartigen Versuchen mit Script-Tags usw. führen könnte). Ich bemerkte jedoch, dass Angular2 schlau genug ist, JavaScript nicht zu rendern, aber ich bin mir nicht sicher, ob jede Art von Code-Injection abgedeckt ist. Also änderte ich dies:<div>{{ message.data.text }}</div>
Diese alle HTML ignoriert und macht
<h1> Nachricht </h1 >
Ist dies ein sicherer Weg, dies zu tun? Oder gibt es noch immer Täter? Ich denke, der beste Weg, um dieses Problem anzugehen, ist, alle unsicheren Eingabe im Backend herauszufiltern (gibt es eine zuverlässige Möglichkeit, das zu tun?)
Vielen Dank!