我正在构建一个Web应用程序,用户可以在其中提供一些自己的html,并且应该将其插入到页面的div元素中。我唯一担心的是用户是否提供了一些非常糟糕的代码。我如何'沙箱'他的HTML代码,如果真的那么糟糕,它不会破坏页面其余部分的布局?
答案 0 :(得分:3)
<iframe sandbox="">
。实际上没有任何其他可靠的方法。
答案 1 :(得分:0)
这真的很难做到。您可以尝试限制/解析代码(过滤掉您不想要的东西,如未关闭的标签(关闭它们)或像script
标签那样的细分,或者您可以在iframe
中显示代码(大多数浏览器会为其访问权限添加一些保护,特别是如果它指向不同的主机(例如http://usercode.mydomain.com/
而不是http://www.mydomain.com/users/
。
对此没有完美的最终解决方案,它也将基于您希望用户能够做到的事情。如果它是关于使用一些格式标签(如此处可用),那么编写自己的解析器,不要只允许它们直接注入HTML(即过滤掉所有未列入白名单的内容)。
答案 2 :(得分:0)
试试这个:http://code.google.com/p/google-caja/
Caja编译器是一个用于制作第三方HTML,CSS和CSS的工具 JavaScript可以安全地嵌入您的网站。它可以实现丰富的互动 嵌入页面和嵌入式应用程序之间。 Caja用了一个 对象能力安全模型允许广泛的灵活性 安全策略,使您的网站可以有效控制什么 嵌入式第三方代码可以处理用户数据。