Javascript 仅HTML小部件安全吗?

Javascript 仅HTML小部件安全吗?,javascript,security,plugins,firefox-addon,widget,Javascript,Security,Plugins,Firefox Addon,Widget,我想通过浏览器插件在随机页面上显示一些框。这些盒子的内容也是随机的 从上述框中删除脚本的简单检查是否足以为用户提供安全体验 我必须把盒子放在iFrame里吗 我是否从HTML中删除了其他代码?(删除“脚本”标记是否足够?) 你知道有哪个库可以自动完成这项功能吗?这完全取决于内容来自何处以及它是什么类型的内容 例如,如果内容只是来自站点的文本,您可能希望过滤掉HTML,以防万一 我必须把盒子放在iFrame里吗 是或否,取决于您对安全的定义。 这不会阻止脚本启动恶意软件下载、将用户重定向到网络钓鱼

我想通过浏览器插件在随机页面上显示一些框。这些盒子的内容也是随机的

从上述框中删除脚本的简单检查是否足以为用户提供安全体验

我必须把盒子放在iFrame里吗

我是否从HTML中删除了其他代码?(删除“脚本”标记是否足够?)


你知道有哪个库可以自动完成这项功能吗?

这完全取决于内容来自何处以及它是什么类型的内容

例如,如果内容只是来自站点的文本,您可能希望过滤掉HTML,以防万一

我必须把盒子放在iFrame里吗

是或否,取决于您对安全的定义。 这不会阻止脚本启动恶意软件下载、将用户重定向到网络钓鱼页面、对用户当前登录的设计糟糕的网站进行XSRFing

从上述框中删除脚本的简单检查是否足以为用户提供安全体验

没有。有很多方法可以嵌入脚本,而简单的检查很少能正确执行。例如,脚本可以嵌入到链接、CSS、SVG、数据:URL等中。 不要使用自己的HTML消毒剂

但与您关于安全HTML小部件的问题直接相关的是沙盒JavaScript。看见

,平面HTML仍然可能是恶意的。可以使用
从任何网站加载驱动器漏洞。
标记可用于利用基于GET的跨站点请求伪造(CSRF)漏洞进行攻击。基于POST的CSRF攻击需要一行javascript或一些用户交互


删除javascript表单html远比删除脚本标记复杂得多。由数百个正则表达式组成,这是删除javascript的最佳方法,但并不完美。

什么算安全?如果该框要求用户输入他们的电子邮件密码,那么它是不安全的,并且您对此无能为力。过滤掉脚本比说得容易done@Gareth说得好。但目前我只对技术感兴趣issues@Matt您的意思是拥有href=“javascript:…”?还有其他问题吗?请分享一些经验/提供一些关于这个问题的文档。即使您可以确定没有脚本运行(例如,想象CSP正在运行),我仍然不认为它是安全的(至少不完全安全)。例如,如果一篇博客评论包含一个绝对定位元素,大小为100%,背景为脏图片,会发生什么情况?如果HTML包含请求凭据的典型表单,并将其发送到Mallory自己的服务器,该怎么办?如果没有编写脚本的能力,你仍然有做坏事的空间。关键是要有一些不依赖于内容来源的东西。它应该适用于任何页面和框中的任何内容。哈哈,我刚才在看一段视频,我是5分钟前从caja页面上找到你的()。我想避免使用caja,因为你必须控制/修改主机页(请确认)。@BenoitParis,你的问题的答案是肯定的,但如果你可以将HTML注入页面,那么你确实有权控制/修改主机页:)谢谢=)我想你是在说。最后一个问题:主机页可以看到它正在托管诱骗内容,可以发布代码来加载/卸载小部件,但它可以篡改诱骗小部件中的内容吗?@BenoitParis,是的,主机页拥有完全控制权。Caja保护主机页不受窗口小部件的影响,并相互保护窗口小部件,但不保护主机页上的窗口小部件。HTMLPurier是WAF组件—web应用程序防火墙的一个示例。@Christian Sciberas Nope,这是不正确的。这是一个PHP库,用于从HTML中删除所有javascript,如果你不相信的话,请尝试下载它。它确实执行与WAF相同的操作,或者至少是它的引擎部分。@Christian Sciberras不,一点也不。这是一个可以用来清理输入的函数。WAF尝试记录或删除所有输入。此外,htmlpurifer速度非常慢,在所有输入上运行它会让服务器崩溃。但同样的“规则”系统适用于WAF——我说的不是程序功能,而是逻辑。可以用WAF规则来做OP想要做的事情。