ich über Winkel Weg lesen alles zu entkommen standardmäßig und $sce
, so dass ich weiß-Listendaten mit $sce.trustAsHtml()
durch Filter (seit $sce
funktioniert nicht in Betrieb ist), wie folgt aus:Teil HTML-String in Angularjs Flucht
<sup class="ng-binding" ng-bind-html="row|logEntry"></sup>
Aber das Problem ist, dass ich einige Teile von HTML nicht traue.
Um in Details zu tauchen - ich habe translations, die HTML enthalten, aber sie haben ersetzbare Token/Variablen in ihnen. Also translations support HTML, aber ich möchte nicht, dass Token HTML enthalten.
Mein Filter logEntry
sieht intern wie folgt aus:
var translated = $translate('Log.' + msg.context.entity_type) + '.' + msg.context.action, {
'object_name': msg.context.object_name,
'user': msg.context.user_name
});
return $sce.trustAsHtml(translated);
Zum Beispiel I Übersetzung haben kann über UserX Artikel zu ändern, aber ich will nicht Ergebnis Text Alarm auslösen(), wenn der Benutzer den Namen <script>alert('evilname')</script>
enthält
$translate
an sich ist nicht relevant, es kann jeder HTML-String sein, wo ich einige Teile mit regulären JS .replace()
mit Inhalt bleiben "als Text" ersetzt werden soll.
Also meine Frage ist - Wie kann ich Teile von HTML entkommen? Muss ich darauf zurückgreifen, Teile in einer Ansicht zu schneiden? Oder muss ich auf benutzerdefinierte Entweichen zurückgreifen ( Fastest method to escape HTML tags as HTML entities?)? Gibt es eine bevorzugte Praxis für solche Dinge?