我有一个基本的网络邮件客户端我正在写。服务器是围绕一个基本的node.js http服务器构建的。页在https上使用有效的“让我们加密”的证书提供。消息体通过.srcdoc属性加载到沙箱化的iframe中。
我认为将消息加载到沙箱中的iframe会减轻关于混合内容和跨域内容的安全警告。不幸的是,当内容加载到iframe时,绿色锁仍然消失,并被安全警告所取代。
详细信息:后端使用node.js imap简单模块从imap服务器检索邮件内容,并以json对象的形式返回电子邮件数据,然后将其解析为包含来自/cc/bcc/date/subject/text/html条目的信封对象数组。文本电子邮件不是一个问题,但html电子邮件需要显示为html (当然,除非用户选择no-html)。
如何安全地显示html消息内容,并避免由于包含的消息内容不是来自我的站点而引起的安全警告?
除此之外,它似乎对沙箱式的iframes起着很好的作用。其他站点上消息内容中的cookie似乎与他们自己的域隔离得很好,就像我的网站上的cookie一样。它似乎很好地将非站点数据与我自己的站点数据、脚本禁用等与沙箱中的运行数据分离开来。如果启用测试,则从沙箱内部运行的脚本实际上无法访问沙箱之外的对象。
我认为出现这些警告是因为沙箱内的页面是从我的站点的包含页面生成的,尽管内容引用在url之外。很明显,沙箱页面不能从外部站点引用,因为它是电子邮件。
如何处理此问题以避免安全警告?其他网络邮件客户是如何做到这一点的?真正的问题是,它使它看起来像我的网站是不安全的人,谁不读实际的警告,或不明白它的含义(即大多数普通用户)。
我的印象是,将消息包含在沙箱中将防止警告出现在包含的页面上。
一些psuedocode来举例说明页面的基本结构:
<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>发布于 2018-05-29 17:18:41
这是一个特性,而不是一个bug。
跨域帧不会显示为安全。
如何安全地显示html消息内容,并避免由于包含的消息内容不是来自我的站点而引起的安全警告?
你可以把它从你的网站,而不是其他网站。这将修复SSL警告,但不会使任何“安全”。如果内容是危险的,它仍然是危险的。
https://stackoverflow.com/questions/50574679
复制相似问题