如何在 Web 应用程序中安全地显示 HTML 电子邮件?

Joa*_*rel 5 email xss asp.net-mvc web-applications

在 C#/ASP.NET MVC Web 应用程序中,我想显示从不受信任的来源收到的 HTML 电子邮件。有谁知道是否有已知的最佳实践(甚至工具)以“安全”的方式进行。据我所知,大多数网络邮件执行广泛的预处理(禁用图像链接,删除脚本等)。

有什么比仅将电子邮件显示为文本更简单的事情吗?

Aar*_*web 3

乔安妮斯,

最简单的方法是使用 Web Protection Library 的白名单服务来过滤掉潜在的恶意 HTML: http: //wpl.codeplex.com/

至于实现更复杂的客户端行为,例如阻止来自未知来源的图像,除非用户授权,您可能需要尝试按照以下方式实现:

  1. 不要将完整的<img src="{URI}" />标签传递回客户端 - 而是推送具有唯一 ID 属性的图像,并将其 src 改为默认的“无法显示图像”图标。
  2. 添加一个按钮或其他一些 UI 控件,用户可以在其中明确同意为此方法显示图像。
  3. 在电子邮件查看控制器上构建一个操作方法,该方法返回一个 JsonResult 和一个字典,该字典包含图像的 ID 及其 src 值。
  4. 编写一个 JavaScript 方法,该方法将调用操作方法,并在从操作方法接收到 JsonResult 后将适当的 src 值交换回原位。

希望这可以帮助!