Вопрос о ng-bind-html
при обновлении приложения Angular с 1.0.8 до 1.2.8:
У меня есть языковые строки, хранящиеся в файлах с именем en_GB.json
, fr_FR.json
и т.д. До сих пор я разрешил использование HTML в строках локали, чтобы команда, пишущая локализованный контент, применяла базовый стиль или добавляла встроенную якорные метки. Это приведет к следующему примеру JSON:
{
"changesLater": "<strong>Don't forget</strong> that you can always make changes later."
"errorEmailExists": "That email address already exists, please <a href=\"login\">sign in</a> to continue."
}
При использовании этих строк с ng-bind-html="myStr"
, я понимаю, что теперь мне нужно использовать $sce.trustAsHtml(myStr)
. Я даже мог написать фильтр, как было предложено в этом qaru.site/info/27119/..., который приведет к использованию ng-bind-html="myStr | unsafe"
.
Вопросы:
- Делая что-то подобное, мое приложение теперь небезопасно? И если да, то каким образом злоумышленник может использовать это?
- Я могу понять потенциальные эксплойты, если источником отображаемой строки HTML был пользователь (т.е. комментарии в стиле пост-стиля в блоге, которые будут отображаться другим пользователям), но действительно ли мое приложение будет подвержено риску, если я покажу только HTML из файла JSON, размещенного в том же домене?
- Есть ли другой способ, которым я должен искать разметку загруженных извне строк контента в приложении Angular?