由于客户端JavaScript不需要任何应用程序访问权限即可访问,因此,任何时候都可以执行以安全为中心的代码审查。这类审查的关键在于确定客户端组件中的所有漏洞,如基于DOM的XSS,它们使用户易于受到攻击(请参阅第12章了解相关内容)。审查JavaScript的另一个原因是,这样做有助于了解客户端实施了哪些输入确认,以及动态生成的用户界面的结构。
当审查JavaScript代码时,必须确保检查.js文件和在HTML内容中嵌入的脚本。
需要重点审查的是那些读取基于DOM的数据以及写入或以其他方式修改当前文档的API,如表19-12所示。
表19-12 读取基于DOM数据的JavaScript API
API | 描 述 |
---|---|
document.location document.URL document.URLUnencoded document.referer window.location |
这些API可用于访问通过专门设计的URL控制的DOM数据,因而攻击者 可向它们提交专门设计的数据,攻击其他应用程序用户 |
document.write() document.writeln() document.body.innerHtml eval() window.execScript() window.setInterval() window.setTimeout() |
这些API可用于更新文档的内容并动态执行JavaScript代码。如果向这些 API提交攻击者可控制的数据,他就可以在受害者的浏览器中执行任意 JavaScript代码 |