在浏览器中显示电子邮件:安全风险

时间:2019-05-01 06:26:12

标签: email security html-email

我们有一个公司网站,可以接收外部电子邮件,对其进行处理并在浏览器中向用户显示。如果有可用的电子邮件,我们将以HTML格式显示。但是,这基本上意味着我们将显示用户生成的HTML代码(据我所知,您可以在电子邮件中发送任何HTML)。

这里有哪些安全隐患?为了使这些风险最小化应采取哪些步骤?

我目前能想到的是:

  • 删除所有javascript
  • 也许删除外部CSS?不确定这是否存在安全风险
  • 不加载图像(以限制跟踪...不确定是否构成安全风险或仅仅是隐私风险)

就这样吗?删除HTML标签总是容易出错,所以我想知道是否有更好的方法在显示电子邮件时以某种方式禁用外部脚本?

1 个答案:

答案 0 :(得分:1)

据我所知,安全风险与跨站点脚本(XSS)相同。 OWASP描述了以下风险:

  

XSS可能给最终用户带来各种问题,其严重程度从烦恼到完全破坏帐户。最严重的XSS攻击涉及泄露用户的会话cookie,从而使攻击者能够劫持用户的会话并接管帐户。其他破坏性攻击包括披露最终用户文件,安装特洛伊木马程序,将用户重定向到其他页面或站点或修改内容的表示形式。允许攻击者修改新闻稿或新闻的XSS漏洞可能会影响公司的股价或降低消费者的信心。

Source

针对它的防御必须具有防御层,例如但不限于:

  • 使用DOMPurify之类的方法对HTML进行消毒。
  • 对安全性敏感的cookie使用仅HTTP cookie,以便无法从JavaScript读取它们。 Source
  • 添加内容安全策略,以便浏览器仅信任您告诉其信任的域中的脚本。 Source

根据您的要求,也可以将电子邮件内容加载到sandbox iframe中,以作为其他安全措施。可以这样做:

var sanitizedHTML = DOMPurify('<div>...</div>');
var iframe = document.getElementById('iframeId');
iframe.srcdoc = sanitizedHTML;