Używam div elementu contentEditable, aby umożliwić użytkownikom formatowanie artykułów. Zajmuję się przetwarzaniem treści html i utrzymuję ją.Dlaczego AngularJS eliminuje atrybuty danych podczas używania ng-bind-html?
Używam ng-bind-html
do renderowania wyniku, gdy widz chce przeczytać artykuł. Nie chcę używać $sce.trustAsHtml
, ponieważ nadal chcę, aby AngularJS zdezynfekował dane wejściowe użytkownika i ponieważ nie mam zaufania do wszystkich danych wejściowych. Wszystko, czego chcę, to odkażanie AngularJS, aby umożliwić pewne atrybuty na elementach. Wydaje się, że usuwa identyfikatory i atrybuty danych. (ale zachowuje klasę i tytuł).
Czy atrybuty danych są uważane za szkodliwe? W jaki sposób atakujący może ich użyć do ataku na użytkownika końcowego? I czy istnieje sposób na ich bezpieczne użycie i niech Angular ich nie rozwiąże?
Oto przykład:
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>
Oto co kątowe wyjścia wewnątrz znacznika artykułu (zawiadomienie okorowane data- atrybut):
<p class="guid-tagged">Yes this is my article</p>
Dzięki
Sanitizer posiada zakodowaną listę dozwolonych atrybutów, co oznacza, że nie ma wbudowanej funkcji do dodawania własnych, a atrybuty danych będą domyślnie usunięte. Ty sprawdzasz źródło https://github.com/angular/angular.js/blob/master/src/ngSanitize/sanitize.js – jornare