2015-10-14 4 views
6

У меня странное или, возможно, намеренное поведение с угловым переводом.
Наше значение Терапи являетсяугловой перевод sanitize/escape

$translateProvider.useSanitizeValueStrategy('sanitize'); 

Мы используем в основном перевод фильтра в нашем приложении, но когда дело доходит до специальных символов, мы получаем, например, вместо Überschrift что-то вроде & # 220; berschrift.
Если я использую директиву, он работает.
Если я использую фильтр, это работает только тогда, когда стратегия sanitize установлена ​​на «escaped».

Есть ли другое решение, чем переписать ВСЕ фильтры трансляции на директивы?

Вот мой plnkr http://plnkr.co/edit/QIMVQcyH5APeYxNnS82v

Для вашей информации, я не могу просто использовать «сбежавшего» стратегию, потому что мы используем угловые транслируют переменные, а также и эти переменные содержат иногда даже HTML-теги.

Спасибо!

ответ

10

Использовать sanitizeParameters вместо sanitize. Вот неподвижная plnkr: http://plnkr.co/edit/qicVqPXn3qo6hMNa1fY2?p=preview

(EDIT: 07/10/2016): Существует значительная разница между этими двумя стратегиями санитарной обработки. sanitizeParameters дезинфицирует параметры интерполяции, а не переведенный вывод. Это означает, что он не позволяет изменять эти параметры, но переведенный контент по-прежнему уязвим, поскольку он не подвергается дезинфекции.

Проблема с sanitize и символами UTF-8 - это известная проблема, и я считаю, что она работает.

+0

Спасибо, я попробовал это раньше, и это как-то не сработало. Но теперь это так! – Anditthas

+0

Каковы последствия этого изменения для безопасности? Я не могу понять из документов https://angular-translate.github.io/docs/#/guide/19_security –

+0

Я должен был сделать это раньше, но теперь я отредактировал ответ, чтобы предоставить дополнительную информацию. – DGarvanski

Смежные вопросы