Отображение электронной почты в браузере: угрозы безопасности - PullRequest
0 голосов
/ 01 мая 2019

У нас есть корпоративный веб-сайт, который получает внешние электронные письма, обрабатывает их и показывает их в браузере пользователю. Мы будем показывать электронные письма в формате HTML, если они доступны в этом формате. Тем не менее, это в основном означает, что мы будем показывать сгенерированный пользователем HTML-код (насколько я знаю, вы можете отправить любой HTML-код по электронной почте).

Какие здесь риски безопасности? Какие шаги нужно предпринять, чтобы минимизировать эти риски?

В настоящее время я могу думать о:

  • Удаление всего JavaScript
  • Возможно удаление внешнего CSS? Не уверен, что это угроза безопасности
  • Не загружать изображения (для ограничения отслеживания ... не уверен, представляет ли это угрозу безопасности или просто угрозу конфиденциальности)

Это все? Удаление тегов HTML всегда подвержено ошибкам, поэтому мне интересно, есть ли лучший способ как-то отключить внешние скрипты при отображении электронной почты?

1 Ответ

1 голос
/ 01 мая 2019

Насколько мне известно, риски безопасности такие же, как и в случае межсайтового скриптинга (XSS). OWASP описывает риски следующим образом:

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

Источник

Защита от него должна быть с уровнями защиты, такими как, но не ограничиваясь:

  • Очистка HTML с помощью чего-то вроде DOMPurify .
  • Использование файлов cookie только HTTP для чувствительных к безопасности файлов cookie, чтобы их нельзя было прочитать из JavaScript. Источник
  • Добавление политики безопасности содержимого, чтобы браузер доверял сценариям только тех доменов, которым вы доверяете. Источник

В зависимости от ваших требований также может быть возможно загрузить содержимое электронной почты в песочницу iframe, в качестве дополнительной меры безопасности. Это можно сделать так:

var sanitizedHTML = DOMPurify('<div>...</div>');
var iframe = document.getElementById('iframeId');
iframe.srcdoc = sanitizedHTML;
...