我正在编写一个基本的Webmail客户端。服务器围绕基本node.js http服务器构建。使用Let's Encrypt中的有效证书通过https提供页面。邮件正文通过.srcdoc属性加载到沙盒iframe中。
我认为将邮件加载到沙盒中的iframe可以缓解有关混合内容和跨域内容的安全警告。不幸的是,当内容加载到iframe时,绿色锁仍然会消失并被安全警告替换。
详细信息:后端使用node.js imap-simple模块从imap服务器检索邮件内容,并将电子邮件数据作为json对象返回,然后将其解析为包含from / to / cc的包络对象数组/ bcc / date / subject / text / html条目。文本电子邮件不是问题,但是html电子邮件需要显示为html(除非用户选择no-html)。
如何安全地显示html邮件内容并避免因包含的邮件内容而导致的安全警告?
除此之外,它似乎与沙盒iframe一起发挥作用。来自其他网站上的邮件内容的Cookie似乎很好地隔离到自己的域,就像来自我网站的Cookie一样。它似乎很好地将异地数据与我自己的网站数据分开,脚本被禁用等在沙箱中运行。如果启用了测试,则从沙箱内部运行的脚本确实无法访问沙箱外的对象。
我认为警告出现是因为沙箱中的页面是从我网站的包含页面生成的,尽管内容引用了url之外的内容。显然,沙盒页面无法从外部网站引用,因为它是一封电子邮件。
如何解决此问题以避免安全警告?其他webmail客户端如何做到这一点?真正的问题是,看起来我的网站对于没有阅读实际警告的人来说是不安全的,或者不明白它意味着什么(即大多数普通用户)。
我的印象是在沙箱中包含邮件会阻止警告显示在包含页面上。
一些伪代码来举例说明页面的基本结构:
<html>
<iframe id=mainpage>
#docuement
<iframe sandbox id=envelope0>
#document
<div> ...email body with off-site content here </div>
</iframe>
</iframe>
<script> //foo to get/generate html from the message(s) </script>
</html>
答案 0 :(得分:2)
这不是一个错误的功能。
跨域框架不会显示为安全。
如何安全地显示html邮件内容并避免因包含的邮件内容而导致的安全警告?
您可以从您的网站而非其他网站提供。这将修复SSL警告,但不会做任何事情&#34;安全&#34;。如果内容很危险,那仍然是危险的。