我写了一个通过IMAP提取电子邮件的网络应用程序。我现在需要向用户显示这些电子邮件。 我认为这很简单(我在支持HTML的浏览器中显示HTML),直到我对此进行了一些调查...并发现有吨的问题,例如:
是否有良好的,安全方式来显示HTML电子邮件?我会因为#34; safe"而不是"华丽",即使我不想只显示电子邮件的文本版本(甚至不保证在那里......)
我意识到最明显的答案是"把所有东西放在框架中#34; - 那是真的吗? 实际会工作吗?
如果它有帮助,我正在使用Node服务器端......
答案 0 :(得分:10)
..最明显的答案是"把所有内容都放在一个框架中" ......它实际是否有效?
是的,例如Whiteout Networks GmbH's WHITEOUT.IO在/src/tpl/read.html和/src/js/controller/read-sandbox.js中执行此操作。某些安全问题由DOMPurify
处理..有很多问题..有好,安全方式..?
我知道邮件数据格式也在名称EML或MHTML下,因此正在寻找好" XY到HTML转换器"或"支持XY的HTML5文档查看器"可能会为您指出可用的结果(例如GroupDocs.Viewer)
某些电子邮件客户端(例如GMail)不使用iframe
,而是使用邮件解析器(例如andris9/mailparser)和HTML解析器(例如cheeriojs/cheerio)提取电子邮件安全html子集(有关示例,请参阅Stack Overflow: What guidelines for HTML email design are there?和Stack Overflow: Styling html email for GMail)或使用HTML sanitizer(例如Google's Caja,cure53/DOMPurify)并将代码直接嵌入页面。
但这并不总是一件容易的事,对于什么构成电子邮件安全-html子集没有达成共识,你当然不会内联可能被感染的附件,也不会运行匿名CORS secured用户会话中的脚本。
无论如何,一如既往,研究各种电子邮件客户端的源代码(参见Wikipedia: Comparison of email clients)是找出方法..