ng-bind-html-unsafe
został usunięty w Angularze 1.2
Próbuję wdrożyć coś, co muszę użyć ng-bind-html-unsafe
. W dokumentach i na github commit mówią:
ng-bind-html zapewnia zachowanie podobne do ng-html-bind-niebezpiecznych (wynik wewnętrzny bez HTMLHitml bez sanityzacji), gdy jest powiązany z wynikiem $ sce.trustAsHtml (string).
Jak Ty to robisz?
Odpowiedzi:
To powinno być:
plus w twoim kontrolerze:
zamiast starej składni, w której można odwoływać się
$scope.html
bezpośrednio do zmiennej:Jak zauważyło kilku komentujących,
$sce
należy wprowadzić je do sterownika, w przeciwnym razie wystąpi$sce undefined
błąd.źródło
<p ng-bind-html="trustedHtml"></p>
i$scope.trustedHtml = $sce.trustAsHtml(description(category.id));
<p ng-bind-html="description(category.id)"></p>
następnie ostatni wiersz funkcji:return $sce.trustAsHtml(value);
Filtr
Stosowanie
źródło
ngSanitize
tutaj?ngSanitize
, więc nie ma takiej potrzebyngSanitize
Osobiście odkażam wszystkie moje dane za pomocą niektórych bibliotek PHP przed wejściem do bazy danych, więc nie potrzebuję dla mnie innego filtra XSS.
Z AngularJS 1.0.8
Używać:
Aby wyłączyć
$sce
:źródło
<script>System.out.printIn("Hello World!");</script>
, nie próbowałem tego osobiście, ponieważ mój PHP usunął wszystkie JS z danych wejściowych użytkownika. Usunąłem mój drugi przykład, ponieważ natywny Angulara jest lepszy pod każdym względem, tylko go używaj.var line = "<label onclick="alert(1)">aaa</label>";
1. użyj filtra
przy użyciu (html):
2. użyj ngSanitize: bezpieczniej
zawierać
angular-sanitize.js
dodaj
ngSanitize
w aplikacji kątowej rootprzy użyciu (html):
źródło
Po prostu utworzenie filtra załatwi sprawę. (Odpowiedzi na Angular 1.6)
I użyj tego w następujący sposób w html.
źródło
Jeśli chcesz przywrócić starą dyrektywę, możesz dodać to do swojej aplikacji:
Dyrektywa:
Stosowanie
Źródło - https://github.com/angular-ui/bootstrap/issues/813
źródło
JavaScript
HTML
źródło
W przypadku Railsów (przynajmniej w moim przypadku), jeśli używasz klejnotu angularjs-rails , pamiętaj, aby dodać moduł dezynfekujący
A potem załaduj go do swojej aplikacji ...
Następnie możesz wykonać następujące czynności:
Na szablonie:
I ostatecznie:
źródło
źródło
źródło