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

How to dynamically insert html which may contain link and script tags?

本文关键字:链接 包含 脚本 标签 html 何动态 动态 插入      更新时间:2023-09-26

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

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

这引发了一系列关于安全等方面的问题。我的应用程序应该允许这样的链接吗?我应该提取linkscript标签并将它们插入我的页面head中吗?

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

我认为你应该使用iframe来显示你的邮件内容。这样你就可以依靠浏览器的安全功能,减少XSS漏洞。

发送HTML内容的服务应该剥离脚本标签,并设置content-security-policy头以禁用内联脚本。

即使您希望允许在邮件中执行脚本(我不假设),iframe也比将邮件内容注入您自己的DOM中提供更好的隔离。

您真的应该拒绝脚本。

无论如何,你当然可以动态加载/填充iframe。只需更新其src。iFrame不是一个安全保险的思想。

注意:你的问题不是代码问题。在我看来,不应该在这里张贴。

iFrame提供了很少的隔离-至少它隔离了css样式…- - - - - -。XSS可以在没有script的情况下发生。另外,script在客户端执行。它能做什么,可能是显示色情,或不公平的东西,或窃取本地信息?本地存储?显示html对您的系统来说真的没有什么危险。XSS工作在表单中,表单是有针对性的,背后有数据库进程。但是如果你只显示html,天哪,你可以保持凉爽。删除脚本,因为没有理由在邮件中有脚本

没有必要感到害怕,因为任何人都在谈论SQL注入XSS等等。说没有表单,没有ajax,在你的情况下,这是荒谬的,抱歉,回答有风险。在显示HTML时没有什么好担心的。省时省力