我正在使用jQuery构建一个显示电子邮件的网页。电子邮件是从REST服务中读取的,可以是纯文本或HTML格式。
到目前为止,我测试的所有html格式的邮件都只有正文内容 - 即没有<html>
或<head>
或<body>
。今天我收到一封html格式的邮件,里面有一整个文件。头部和身体标签被过滤掉(可能是浏览器)但我的问题是邮件使用的样式是从发件人的网站上提取的。
这些提出了一整套关于安全性等问题。我的应用程序是否应该允许这样的链接?我应该提取link
和script
代码并将其插入我的页面head
吗?
是否有其他类似于iframe
的解决方案?
答案 0 :(得分:1)
我认为您应该使用iframe来显示邮件的内容。这样您就可以依赖浏览器安全功能并缓解XSS漏洞。
发送HTML内容的服务应删除脚本标记,并设置content-security-policy标题以禁用内联脚本。
即使您希望允许在电子邮件中执行脚本(我也不假设),iframe提供的隔离比将邮件内容注入您自己的DOM更好。
答案 1 :(得分:0)
你应该拒绝脚本。
无论如何,您当然可以动态加载/填充iframe。只需更新其src
即可。 iFrame不是安全保险的想法。
注意:您的问题不是代码问题。不应该在这里发布IMO。
答案 2 :(得分:0)
iFrame几乎没有隔离 - 至少它隔离了css样式...... - 实际上。 XSS可以在没有script
的情况下发生。此外,script
在客户端执行。它可以做什么,可能显示色情,或不公平的事情,或窃取本地信息?本地存储?显示html
对您的系统来说真的很危险。 XSS在表单中工作,表单是目标因素 - 后面 - 有数据库进程。但如果你只显示html
,omg,你可以保持冷静。只需删除脚本原因没有理由在邮件中添加脚本
没有必要感到害怕导致任何人谈论 SQL注入, XSS 等等。说明没有形式,没有ajax,在你的情况下,这是荒谬的,对不起,回答有风险。 您无需担心显示HTML。节省您的时间。