2015-10-14 15 views
6

Mam dziwne lub może zamierzone zachowanie z translacją kątową.
Nasza wartość strategie jestangular translate sanitize/escape

$translateProvider.useSanitizeValueStrategy('sanitize'); 

Używamy głównie tłumaczyć filtra w naszej aplikacji, ale jeśli chodzi o znaki specjalne otrzymujemy na przykład zamiast Überschrift coś & # 220; berschrift.
Jeśli użyję tej dyrektywy, to działa.
Jeśli używam filtra, działa to tylko wtedy, gdy strategia odkażania jest ustawiona na "escaped".

Czy istnieje inne rozwiązanie niż przepisanie WSZYSTKICH filtrów tłumaczenia na dyrektywy?

Oto moja plnkr http://plnkr.co/edit/QIMVQcyH5APeYxNnS82v

Dla twojej informacji, nie mogę po prostu użyć „uciekł” strategii, ponieważ używamy kątowych przekładają zmienne, jak również i te zmienne zawierają czasami nawet znaczniki HTML.

Dzięki!

Odpowiedz

10

Użyj sanitizeParameters zamiast sanitize. Poniżej znajduje się poprawiona wersja: http://plnkr.co/edit/qicVqPXn3qo6hMNa1fY2?p=preview

(EDYCJA: 07.10.2016): Istnieje znacząca różnica między dwiema strategiami dezynfekcji. sanitizeParameters oczyszcza parametry interpolacji, a nie przetłumaczone dane wyjściowe. Oznacza to, że nie pozwala na zmiany tych parametrów, ale przetłumaczona treść jest nadal podatna na ataki, ponieważ nie jest oczyszczona.

Problem ze znakami sanitize i UTF-8 jest znanym problemem i uważam, że jest on w trakcie pracy.

+0

Dzięki, spróbowałem tego wcześniej i jakoś nie zadziałało. Ale teraz tak jest! – Anditthas

+0

Jakie są skutki tej zmiany dla bezpieczeństwa? Nie mogę dowiedzieć się z dokumentacji https://angular-translate.github.io/docs/#/guide/19_security –

+0

Powinienem był to zrobić wcześniej, ale zredagowałem teraz odpowiedź, aby dostarczyć więcej informacji. – DGarvanski

Powiązane problemy