Sto utilizzando un div ContentEditable per consentire agli utenti di formattare i loro articoli. Faccio qualche elaborazione sul contenuto html e lo mantengo.Perché AngularJS esclude gli attributi dati quando si utilizza ng-bind-html?
Sto usando ng-bind-html
per rendere il risultato quando gli spettatori vogliono leggere l'articolo. Non voglio usare $sce.trustAsHtml
perché voglio ancora che AngularJS disinfetti l'input dell'utente e perché non mi fido di tutti gli input. Tutto quello che voglio è per la sanitizzazione di AngularJS per consentire alcuni attributi sugli elementi. Sembra striscia ID e attributi dei dati. (ma mantiene classe e titolo).
Gli attributi dei dati sono considerati dannosi? Come può un utente malintenzionato usarli per attaccare l'utente finale? E c'è un modo per usarli in sicurezza e lasciare che Angular non li tolga?
Ecco un esempio:
article.body = '<p data-guid="afasfa-afasfafas-faf-asasf" class="guid-tagged">Yes this is my article</p>';
<article ng-bind-html='article.body'></article>
Ecco cosa uscite angolari all'interno del tag articolo (notare il spogliato fuori dati- attributo):
<p class="guid-tagged">Yes this is my article</p>
Grazie
L'agente disinfettante dispone di un elenco codificato di attributi consentiti, il che significa che non è presente alcuna funzione incorporata da aggiungere e gli attributi dei dati verranno rimossi per impostazione predefinita. Fai attenzione alla fonte https://github.com/angular/angular.js/blob/master/src/ngSanitize/sanitize.js – jornare