2

我有一个会员网站,用户可以在其中将自己的代码嵌入到他们的个人资料中。我想允许他们在他们的个人资料中包含嵌入代码,例如 YouTube 和 Javascript 嵌入代码。

我注意到 JsFiddle.net 可以做到这一点。有人知道如何复制这种安全性吗?

感谢您的任何帮助!

4

2 回答 2

5

为用户提交的 HTML、CSS 和 JavaScript设置一个完全独立的域名(例如“exampleusercontent.com”) 。不允许通过您的主域名加载此内容。然后使用 iframe 将用户内容嵌入到您的页面中。

如果您需要比简单框架更紧密的集成,window.postMessage()可能会有所帮助,允许不同框架中的脚本以受控方式相互通信。

或者,Google Caja是一个用于沙盒第三方 JavaScript 的开源编译器,尽管不时有人发现其中的漏洞。

您可能不想依赖 Caja 作为您唯一的防御层。毕竟,Facebook 确实放弃了类似的系统(称为 FBML/FBJS),转而支持 iframe 沙盒方法。

于 2013-01-04T18:26:29.337 回答
0

我假设您希望从恶意代码注入、sql 注入等中获得安全性。

提交表单后,您需要验证输入服务器端。只要您在那里验证它是否符合您的期望,您应该没问题。您在 JavaScript(如果有的话)中所做的唯一验证应该是帮助用户将他们的信息添加到表单中并查看他们出错的地方,换句话说就是帮助。

我过去曾使用 YouTube API 来验证视频条目。不确定 Vimeo 是否有 API,如果没有,我会感到惊讶。

于 2013-01-04T18:11:32.950 回答