【问题标题】:Securely Embeddable code in Websites在网站中安全嵌入代码
【发布时间】:2015-09-26 05:20:39
【问题描述】:

我正在创建一个允许用户创建广告、应用程序等的网站。可以将其想象为 Adsense 用于广告,Facebook 应用程序用于应用程序。

因此,我允许用户使用提供的工具或通过他们自己的 HTML 代码以他们想要的方式创建广告或应用程序,然后这些代码将在网站中呈现为广告和应用程序以供其他用户查看。

我的问题:

1) 当我允许用户添加自己的代码并嵌入网站时,我的网站是否会面临安全风险? (我不确定,但我认为他们将能够在 javascript 中添加一些恶意代码)

2) 如果我考虑使用 iframe 将嵌入代码与网站的其他部分隔离开来,那会是个问题吗?或者有没有更好的方法来做到这一点?

我想要达到的目标:

在网站中呈现用户生成的自定义 HTML、CSS 代码而不影响安全性的某种元素。

【问题讨论】:

  • 1.是的,非常如此。 2. iframe 是更好的解决方案之一。
  • 嗯.. 根据设计 iframe 用于这些目的..

标签: javascript php html css security


【解决方案1】:

根据他们被允许制作的广告或应用的类型以及他们可以使用的语言,您可能会在某些方面面临风险,尤其是在其他用户可以看到的情况下。

假设他们可以使用 html 并添加此代码

<img src='fake.jpg' onerror='alert("xss");'>

在这种情况下,您所有可以看到这一点的用户都会受到 xss 攻击。如果是这种情况,请参阅此帖子-> How can I allow my user to insert HTML code, without risks?

我不推荐服务器端语言,虽然 iframe 本身可能更安全,但同样适用,尤其是当您的域托管 iframe 时。如果 iframe src 与显示 iframe 的域位于同一域中,则您可以放弃任何可能假装提供的安全 iframe。

最好的解决方案是提供您自己的所见即所得编辑器,将您的特殊代码转换为 html 代码。允许 JS 将成为您要考虑以安全的方式做的事情,这可以通过创建自己的包装器(甚至将一系列 jquery 函数包装在一个包装器中)并将它们巧妙地包含在您的所见即所得中来完成。

【讨论】:

  • 非常感谢您的回答。当我允许人们制作 APPS 时,很多人会在其中使用 javascript。因此,阻止 Javascript 对我来说不是正确的方法。正如你所说,如果我为他们提供一个所见即所得的编辑器来创建内容,他们就无法向其中添加任何 JavaScript 代码。那么,是否没有其他方法可以让用户完全灵活地使用任何语言并仍然将网站的其余部分与它隔离开来?顺便问一下,FB是怎么做到的?他们不会面临安全威胁吗?
  • 在 stackoverflow 中发帖时,您会看到一个巧妙的选项,可以添加类似框的内联 jsfiddle。您可以制作一个包装器来包装诸如淡入或淡出之类的功能,并像 stackoverflow 在该场景中所做的那样巧妙地包含它们。最好的办法是让他们在应用程序中使用 JS 并拥有一个报告/投票系统。您可以通过手动或创建脚本自动检查某些内容(如 iframe)的代码来自动禁止应用程序中的某些内容,但最后,如果他们使用 JS,则需要进行某种程度的验证
  • 感谢您的回复。我明白你想说什么。我刚刚浏览了 Facebook 的代码,才知道他们正在使用 iframe 来开发应用程序。但是你说的问题(来自同一个域的 iframe 仍然让我担心)我会等待更多的答案,如果我没有找到更好的解决方案,我会接受你的。谢谢。
  • 正如你已经提到的同一个域。诀窍是您将用户的应用程序或广告托管在不同的服务器上,或者至少有一个不同的域,最终可能指向您的子域。然后使用 iframe..
  • Akshay Khandelwal - 子域正是我的下一个回应。
猜你喜欢
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
相关资源
最近更新 更多