2015-10-14 14 views
6

Ho un comportamento strano o forse intenzionale con traduzione angolare.
nostro valore strategico èangular translate sanitize/escape

$translateProvider.useSanitizeValueStrategy('sanitize'); 

Usiamo lo più il filtro traducono nella nostra applicazione, ma quando si tratta di caratteri speciali si ottiene, ad esempio, invece di Überschrift qualcosa come & # 220; berschrift.
Se utilizzo la direttiva funziona.
Se utilizzo il filtro funziona solo quando la strategia di sanitizzazione è impostata su "escape".

C'è un'altra soluzione che riscrivere TUTTI i filtri di traduzione in direttive?

Ecco il mio plnkr http://plnkr.co/edit/QIMVQcyH5APeYxNnS82v

Per vostra informazione, non posso semplicemente usare la strategia "scappato", perché usiamo variabili tradurre angolari come bene e queste variabili conteniamo a volte anche tag html.

Grazie!

risposta

10

Utilizzare sanitizeParameters anziché sanitize. Ecco il plnkr fisso: http://plnkr.co/edit/qicVqPXn3qo6hMNa1fY2?p=preview

(EDIT: 2016/07/10): C'è una differenza significativa tra le due strategie di sanificazione. sanitizeParameters disinfetta i parametri di interpolazione e non l'output tradotto. Ciò significa che non consente modifiche in questi parametri, ma il contenuto tradotto è ancora vulnerabile poiché non è sterilizzato.

Il problema con i caratteri sanitize e UTF-8 è un problema noto e credo che sia stato elaborato.

+0

Grazie, l'ho provato prima e in qualche modo non ha funzionato. Ma ora lo fa! – Anditthas

+0

Quali sono gli impatti sulla sicurezza di questo cambiamento? Non riesco a capire dai documenti https://angular-translate.github.io/docs/#/guide/19_security –

+0

avrei dovuto farlo prima, ma ho modificato la risposta ora per fornire maggiori informazioni. – DGarvanski

Problemi correlati