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

时间:2010-12-07 09:57:16

标签: asp.net-mvc email web-applications xss

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

除了仅将电子邮件显示为文本之外,还有什么比这更好的了吗?

1 个答案:

答案 0 :(得分:3)

乔安妮斯,

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

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

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