我们有一个公司网站,可以接收外部电子邮件,对其进行处理并在浏览器中向用户显示。如果有可用的电子邮件,我们将以HTML格式显示。但是,这基本上意味着我们将显示用户生成的HTML代码(据我所知,您可以在电子邮件中发送任何HTML)。
这里有哪些安全隐患?为了使这些风险最小化应采取哪些步骤?
我目前能想到的是:
就这样吗?删除HTML标签总是容易出错,所以我想知道是否有更好的方法在显示电子邮件时以某种方式禁用外部脚本?
答案 0 :(得分:1)
据我所知,安全风险与跨站点脚本(XSS)相同。 OWASP描述了以下风险:
XSS可能给最终用户带来各种问题,其严重程度从烦恼到完全破坏帐户。最严重的XSS攻击涉及泄露用户的会话cookie,从而使攻击者能够劫持用户的会话并接管帐户。其他破坏性攻击包括披露最终用户文件,安装特洛伊木马程序,将用户重定向到其他页面或站点或修改内容的表示形式。允许攻击者修改新闻稿或新闻的XSS漏洞可能会影响公司的股价或降低消费者的信心。
针对它的防御必须具有防御层,例如但不限于:
根据您的要求,也可以将电子邮件内容加载到sandbox iframe中,以作为其他安全措施。可以这样做:
var sanitizedHTML = DOMPurify('<div>...</div>');
var iframe = document.getElementById('iframeId');
iframe.srcdoc = sanitizedHTML;