讨论以下问题:
                1、Internet的脚本技术有什么作用?
                2、如何防止CSSV攻击?
                3、Web网站的创建者可以进行何种类型的测试,以便抵御CSSV攻击?
        交叉网站脚本攻击(Cross Site Scripting Vulnerability,CSSV)是一种相对较新的攻击形式,它可以暴露服务器端的不恰当验证。交叉网站脚本攻击这一术语实际上并不完全准确。但是,在这种攻击问题还没有被完全理解之时,该术语就已经出现了,因此一直沿用至今。当恶意标签或脚本通过某个网站动态生产的Web页面来攻击Web浏览器时,就是交叉网站脚本攻击。攻击者的目标不是Web网站,而是其用户(即客户端或浏览器)。
        CSSV的思想非常容易理解,它是基于探测某个脚本技术(如JavaScript、VBScript或JScript)的。下面来看看其工作原理。下图所示的Web页面中含有一个表单,用户在其中输入其邮寄地址。假设发送该页面的网站URL是www.test.com,而且如果用户提交该表单时,将由服务器端名为address.asp的程序来处理。

《交叉脚本网站攻击》


        通常,用户输入的是房间号、街道名、城市名、邮政编码以及国家名等等。但是,设想一下,如果用户输入了如下的恶意字符串会怎么样?
        <SCRIPT>Hello World</SCRIPT>
        结果,提交的URL就是这样的:
        www.test.com/address.asp?address=<SCRIPT>Hello World</SCRIPT>
        如果服务器端的程序address.asp没有验证用户所发送的输入,只是简单地把地址字段值发送给下一个Web页面,情况会怎么样呢?这意味着下一个Web页面接收到的地址字段值是<SCRIPT>Hello World</SCRIPT>。
        正如我们知道的那样,这很可能会把地址字段的值看作是一个脚本,在Web浏览器上将会运行该脚本,就像是用某种脚本语言编写的那样。因此,用户看到的将是“Hello World”。
        显然,这不能有什么严重的破坏。但是,如果用户真的把有害脚本发送给了服务器会怎么样呢?这将使得客户端接收到一个内容或外观被修改过的Web页面。在更糟糕的情况下,用户输入的保密信息也可能被捕获并发送给其他用户。这该怎么办呢?
        当通过CSSV攻击把一个JavaScript程序下载到浏览器上时,该JavaScript程序反过来又可以调用ActiveX控件的服务。ActiveX控件是一种较小的程序,它可以从服务器上下载到客户端,并在客户端上运行。ActiveX可以玩磁盘上写数据,或从磁盘读取数据,还可以执行很多类似的工作。一旦通过恶意的JavaScript调用下载到客户端中,那么,ActiveX控件就可以进行实际的破坏。
        防止这种攻击的主要方法是对可疑的标签(如<、>、SCRIPT、APPLET、OBJECT)进行输入验证。服务器端程序不应认为基于浏览器的用户输入的数据总是好的。它很可能是恶意的,会给其它客户端带来损害的。
        在任何Web网站上都可以测试CSSV攻击,只需要在输入区域(如文本框)中输入脚本或类似脚本的标签即可。

转自《密码学与网络安全(第3版)》  Atul Kahate著   清华大学出版社 

相关文章: