【问题标题】:Displaying HTML From an email on a website从网站上的电子邮件显示 HTML
【发布时间】:2014-11-29 09:48:02
【问题描述】:

我正在尝试在 html 页面上显示 html 电子邮件。从技术上讲,我可以做到,但安全性是一个问题,攻击者可能会形成恶意代码并将其放入 html 电子邮件中。

我尝试过使用 Microsoft XSS 库来清理 html,但它去除了太多,基本上不值得。

我想知道是否有更好的 iframe 或其他解决方案。例如,有没有办法保护 iframe 中的数据?

GMail 似乎显示 html 电子邮件,它们必须有一个好的 html sanitizer。

【问题讨论】:

  • 不确定我是否理解。电子邮件中的 HTML 本身并不能真正做任何恶意的事情。我想有人可以尝试元刷新,但这不应该工作,因为 HTML 电子邮件正文中没有 head 元素。大多数电子邮件客户端会愉快地显示 HTML 电子邮件,而无需担心安全性。基于 Web 的邮件客户端可能确实在一定程度上进行了清理,但我不确定其中有多少是严格与安全相关的。
  • 有什么不明白的?您可以将任何html写入电子邮件,理论上您可以编写恶意javascript。

标签: javascript html css iframe


【解决方案1】:

您的基本选择是:

  1. 清理 HTML(使用白名单方法,以确保安全)
  2. 将 iframe 与不同域上的 src 或 html5 sandbox 属性一起使用

两者都可以有效地完成,并且在细节上有很多变化。

关于清理这么多不值得:像 https://github.com/guardian/html-janitor/ (javascript) 和 https://github.com/jsocol/bleach (python) 这样的优秀库能够自定义白名单。这取决于您是否只是尝试使用基本格式呈现典型的用户生成的 HTML 电子邮件,或者您是否尝试显示带有大量图像、表格等的完全“设计”的时事通讯。如果只是前者,在一些快速试验中使用漂白剂,我只需将brdiv 添加到已批准的标签列表中,就可以使大多数电子邮件看起来不错,因此空格不会被擦除。

【讨论】:

    猜你喜欢
    • 2012-05-21
    • 1970-01-01
    • 2014-07-10
    • 2011-12-22
    • 1970-01-01
    • 2011-03-05
    • 2012-01-11
    • 2014-05-25
    • 2011-09-10
    相关资源
    最近更新 更多