У меня есть основной клиент веб-почты, который я пишу.Сервер построен на базовом http-сервере node.js.Страницы обслуживаются через https с использованием действующего сертификата Let's Encrypt.Тело сообщения загружается в изолированную рамку iframe через атрибут .srcdoc.
Я думал, что загрузка сообщения в изолированную рамку iframe снизит количество предупреждений безопасности, касающихся смешанного содержимого и содержимого между доменами.К сожалению, когда содержимое загружается в iframe, зеленая блокировка по-прежнему исчезает и заменяется предупреждением безопасности.
Подробности: серверная часть использует модуль node.js imap-simple для получения содержимого почты с сервера imap.и возвращает данные электронной почты в виде объекта json, которые затем анализируются в массив объектов-конвертов, содержащих записи из / в / cc / bcc / date / subject / text / html.Текстовые электронные письма не являются проблемой, но HTML-сообщения должны отображаться в формате html (если, конечно, пользователь не выберет no-html).
Как можно безопасно отображать содержимое html-сообщения и избегать предупреждений безопасности из-за включенногосодержимое сообщения, которое не с моего сайта?
Кроме того, оно отлично работает с вставленными в фреймы песочницами.Куки-файлы из содержимого сообщений на других сайтах, похоже, хорошо разделены по своим доменам, как и куки-файлы с моего сайта.Похоже, что он хорошо отделяет сторонние данные от данных моих собственных сайтов, сценарии отключены и т. Д. От запуска в песочницах.Если включен для тестирования, скрипт, запускаемый из песочницы, действительно не имеет доступа к объектам вне песочницы.
Я думаю, что предупреждения появляются, потому что страница внутри песочницы генерируется из содержащей страницу моего сайта,хотя ссылки на контент за пределами URL.Очевидно, что на изолированную страницу нельзя ссылаться с внешнего сайта, так как это электронное письмо.
Как мне обойти это, чтобы избежать предупреждений безопасности?Как это делают другие клиенты веб-почты?Реальная проблема в том, что он выглядит так, как будто мой сайт небезопасен для людей, которые не читают фактическое предупреждение или не понимают, что оно означает (т.е. большинство обычных пользователей).
У меня сложилось впечатлението, что содержит сообщение в изолированной программной среде, предотвратит появление предупреждения на содержащей странице.
Некоторый псевдокод, иллюстрирующий базовую структуру страницы:
<html>
<iframe id=mainpage>
#docuement
<iframe sandbox id=envelope0>
#document
<div> ...email body with off-site content here </div>
</iframe>
</iframe>
<script> //foo to get/generate html from the message(s) </script>
</html>