Подходит ли в этом контексте обход угловой санитарии моему веб-приложению для атаки XSS? - PullRequest
0 голосов
/ 28 мая 2019

Я настраиваю загрузку некоторых файлов в своем веб-приложении и буду хранить файлы в виде данных base64 на своем бэкэнде.Я также отображаю ссылки на файлы, которые загружены в формате:

<a href="{{doc.data}}">{{doc.name}}</a>

, где документ выглядит примерно так:

doc = {
  name: 'example.pdf',
  data: 'application/pdf;base64,JVBERi0xLjUNCiW...'
}

Вход для загрузки принимает изображения и PDF-файлы.

Теперь, это прекрасно работает при нажатии на ссылки для файлов изображений, но для PDF-файлов перед ссылкой добавляется «небезопасный», поэтому Angular должен санировать эту привязку.Я сделал плункер, чтобы продемонстрировать: https://next.plnkr.co/edit/mWQwSQGXXTjMDIGj?open=lib%2Fapp.ts&deferRun=1. Попробуйте загрузить изображение и PDF-файл и посмотрите разницу при попытке загрузить их по ссылкам.

После некоторых исследований я знаю, что могу обойтидезинфекция для связывания с использованием

bypassSecurityTrustResourceUrl(doc.data)

Но я скептически отношусь к этому.Возникают вопросы:

  • Безопасно ли в моей ситуации обходить очистку URL-адресов?Почему?

  • Почему значения URL для файлов PDF помечаются как небезопасные, а значения URL для изображений - нет?

  • Что делаетпроверять дезинфицирующее средство при взгляде на resourceURL?Является ли «небезопасным» какой-либо URL-адрес со словом «application», потому что он может содержать скрипт?

Заранее спасибо.

...