如何动态插入可能包含链接和脚本标记的html?

时间:2015-07-22 08:55:58

标签: javascript jquery html email

我正在使用jQuery构建一个显示电子邮件的网页。电子邮件是从REST服务中读取的,可以是纯文本或HTML格式。

到目前为止,我测试的所有html格式的邮件都只有正文内容 - 即没有<html><head><body>。今天我收到一封html格式的邮件,里面有一整个文件。头部和身体标签被过滤掉(可能是浏览器)但我的问题是邮件使用的样式是从发件人的网站上提取的。

这些提出了一整套关于安全性等问题。我的应用程序是否应该允许这样的链接?我应该提取linkscript代码并将其插入我的页面head吗?

是否有其他类似于iframe的解决方案?

3 个答案:

答案 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。节省您的时间。