1

我希望我的客户在我的 Web 应用程序上创建他们自己的 HTML,并将我的代码复制并粘贴到他们的网站上,以在他们想要的页面中以自定义大小和其他选项显示结果。我的 Web 应用程序的输出 HTML 包含 HTML 标记和 JavaScript 代码(例如,是使用 javascript 创建的 Web 图表)。

我为此找到了两种方法。一用iframe二用jquery .load()

什么更好、更安全?还有其他方法吗?

4

1 回答 1

2

iframe更好 - 如果您正在运行 Javascript,那么该脚本不应在与用户站点相同的上下文中执行:您在这里要求用户不需要接受的信任级别,并且您的代码都很好沙盒,因此您不必担心父文档的样式和脚本。

作为一名前端 Web 开发人员和网站管理员,我经常自己决定在 iframe 中沙箱第三方代码。以下是我这样做的一些原因:

  • 脚本将使用文档的 DOM。一旦第三方小部件自行为 IE 引入有缺陷且性能密集型的 PNG 修复黑客,img跨我们网站的标签和 CSS 中使用的每个 PNG 进行修复。
  • 许多脚本会覆盖全局onload事件,从而剥夺其他脚本的初始化触发器。
  • 读取本地会话信息并将其发送回他们自己的存储库。
  • 加载任意数量的资源并执行 CPU 密集型进程,中断并降低我网站的核心体验。

以上都是您可能认为自己如上所述的第三方短视或恶意的例子,但重点是,作为您服务的用户之一,我不应该赌博。如果我将您的代码放在 iframe 中,我知道它可以愉快地做自己的事情,而不会惹恼我的网站或其用户。我还可以选择将加载和执行延迟到我选择的时刻(通过在选择的时刻动态加载 iframe)。

为了方便而不是用户来争论这一点:

  • 您不必担心与 XSS 相关的任何信任问题。您可以诚实地告诉您的用户,通过运行您的工具,他们不会让自己面临任何不必要的担忧。
  • 您不必付出额外的努力来规避 CSS 和 JS 对用户网站的影响。
于 2012-09-10T11:18:08.050 回答