javascript(和插件)在网页中的位置?

javascript(和插件)在网页中的位置?,javascript,html,security,web,browser,Javascript,Html,Security,Web,Browser,我已经编写了一个拦截代理,我正在为它添加一个功能,其中它将从通过它接收的网页中删除所有JavaScript(以及VBScript和任何插件内容,如Flash、Silverlight、ActiveX组件和Java小程序,这些小程序可以运行任意的,如果是沙盒,则可以与页面交互的代码)。如果删除页面内容是“容易的部分”,那么获得一个详尽的列表,列出这些东西可以隐藏的地方可能是“困难的部分” 当然,JavaScript可以通过各种方式包括其他JavaScript,例如向dom添加新的脚本元素。这与我无关

我已经编写了一个拦截代理,我正在为它添加一个功能,其中它将从通过它接收的网页中删除所有JavaScript(以及VBScript和任何插件内容,如Flash、Silverlight、ActiveX组件和Java小程序,这些小程序可以运行任意的,如果是沙盒,则可以与页面交互的代码)。如果删除页面内容是“容易的部分”,那么获得一个详尽的列表,列出这些东西可以隐藏的地方可能是“困难的部分”

当然,JavaScript可以通过各种方式包括其他JavaScript,例如向dom添加新的脚本元素。这与我无关,因为如果我阻止HTML和/或CSS引入JavaScript的所有方式,我就不必担心JavaScript会引入其他JavaScript。(或者Flash可以拉入JavaScript,或者JavaScript可以拉入Flash内容等)

我确定页面可以包含JavaScript(或VBScript)的方式有:

  • 脚本标记,内联或带有外部文件的“src=”属性
  • 事件属性上的“onload=”、“onclick=”、“onmouseover=”或“other”
  • “javascript:“href=”标签上的属性中的URL
  • 还有CSS的“背景图像:url”(“javascript:…”)技巧(尽管它不适用于所有浏览器)
  • 我的一个问题是,我是否需要担心标签上的“href=”属性以外的其他位置的“javascript:”URL。我知道一些较老的浏览器(如IE6)在img标记中的“src=”attributes中的“JavaScript:”url中执行JavaScript。这与我无关,因为我没有编写截取代理来与IE6这样的浏览器一起使用。但是,如果还有其他“棘手”的地方可以执行“javascript:”url,那么最好知道。(可能在frame和iframe“src=”attributes中?)

    当然,还有我没有考虑过的任何其他JavaScript执行方式

    我确定页面可以包含其他(沙盒)代码的方式有:

  • 嵌入标签
  • 对象标记
  • 小程序标签
  • 我这里有一个问题(这可能被认为是“未来的证明”)关于如何加载WebAssembly字节码。只是我粗略的谷歌搜索并没有确定它到底是如何工作的

    虽然PDF可以在没有扩展或任何东西的大多数现代浏览器中加载,但是我认为PDF超出了这个问题的范围,因为尽管它们可以包含任意的(沙箱)代码,但是该代码不能与网页交互。

    我也认为HTML5视频的问题超出了这个问题的范围,因为它们不运行任意代码。 我也不关心JavaScript或插件执行的任何方式,这些方式需要浏览器扩展的存在,除非这些扩展被非常广泛地使用

    然而,我确实希望这个脚本和插件剥离功能是铁的。如果有人能够通过这个特性使用复杂的方法来滑动代码,那么就我而言,可能采用的复杂方法与这个问题相关

    而且,包含只在某些浏览器中工作而在其他浏览器中不工作的代码的方法也在范围之内


    有没有其他类型的插件或语言可以包含在我上面没有考虑过的网页中?

    首先,使用标签、属性和协议的白名单,而不是黑名单,并且要非常小心。(例如,注释是不安全的;IE有条件注释。
    数据:
    也不安全。)哦,你应该确保,对于每个白名单对象,没有办法强制使用HTML上下文(因为否则就不可能知道要过滤什么)。并确保设备上的任何软件都不能强制使用HTML上下文。如果可能的话,最好只是检查浏览器中是否禁用了JavaScript…