Как безопасно отображать электронные письма в формате HTML в веб-приложении? - PullRequest
4 голосов
/ 07 декабря 2010

В веб-приложении C # / ASP.NET MVC я хотел бы отображать электронные письма в формате HTML, полученные из ненадежных источников.Кто-нибудь знает, существуют ли известные передовые практики (или даже инструменты), чтобы сделать их «безопасным» способом?Насколько я понимаю, большинство веб-писем выполняют обширную предварительную обработку (отключение ссылок на изображения, удаление сценариев и т. Д.).

Можно ли сделать что-нибудь проще, чем просто отобразить письмо в виде только текст ?

1 Ответ

3 голосов
/ 07 декабря 2010

Joannes,

Самое простое, что можно сделать, это использовать службу белого списка Библиотеки веб-защиты для фильтрации потенциально вредоносного HTML: http://wpl.codeplex.com/

Что касается реализации более сложного поведения клиента,например, блокирование изображений из неизвестных источников, если только пользователь не авторизует их, вы можете попытаться реализовать что-то вроде этого:

  1. Не передавать полные теги <img src="{URI}" /> обратно клиенту - вместо этого нажмитеизображение с уникальным атрибутом ID и имеет вместо него значок «не отображать изображение» по умолчанию.
  2. Добавьте кнопку или какой-либо другой элемент управления пользовательского интерфейса, где пользователь может дать свое явное согласие на отображение изображений для этого метода.
  3. Создайте метод действия на контроллере просмотра электронной почты, который возвращает JsonResult со словарем, содержащим идентификатор изображения и значение src.
  4. Напишите метод JavaScript, который будет вызывать действиеметод и поменяйте местами соответствующие значения src после полученияe JsonResult от вашего метода действия.

Надеюсь, это поможет!

...