19.7 JavaScript

由于客户端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代码