中国领先的IT技术网站
|
|

8.4.1 跨站脚本攻击的原理(1)

《软件安全实现——安全编程技术》第8章Web编程安全,本章主要针对Web编程中的一些安全问题进行讲解。首先讲解了Web运行的原理,然后讲解了URL操作攻击,接下来针对Web程序的特性,讲解了四种页面之间传递状态的技术,并比较了它们的安全性,最后针对两种常见的安全问题:跨站脚本和SQL注入进行了详细叙述。本节为大家介绍跨站脚本攻击的原理。

作者:郭克华来源:清华大学出版社|2011-02-18 11:31

开发者大赛路演 | 12月16日,技术创新,北京不见不散


8.4 Web跨站脚本攻击

8.4.1  跨站脚本攻击的原理(1)

跨站脚本在英文中称为Cross-Site Scripting,缩写为CSS。但是,由于层叠样式表 (Cascading Style Sheets)的缩写也为CSS,为不与其混淆,特将跨站脚本缩写为XSS。

跨站脚本,顾名思义,就是恶意攻击者利用网站漏洞往Web页面里插入恶意代码,一般需要以下几个条件:

客户端访问的网站是一个有漏洞的网站,但是他没有意识到;

在这个网站中通过一些手段放入一段可以执行的代码,吸引客户执行(通过鼠标点击等);

客户点击后,代码执行,可以达到攻击目的。

XSS属于被动式的攻击。为了让读者了解XSS,首先我们举一个简单的例子。有一个应用,负责进行书本查询,代码如下:

query.jsp

  1. <%@ page language="java" import="java.util.*"
     pageEncoding="gb2312"%> 
  2. 欢迎查询书本  
  3. <form action="queryResult.jsp" method="post"> 
  4.     请您输入书本的信息:<BR> 
  5.     <input name="book" type="text" size="50"> 
  6.     <input type="submit" value="查询">      
  7. </form> 

运行,效果如下:

 

在文本框内输入查询信息,提交,能够到达queryResult.jsp显示结果。queryResult.jsp代码如下:

queryResult.jsp

  1. <%@ page language="java" import="java.util.*"
     pageEncoding="gb2312"%> 
  2. 您查询的关键字是:<%=request.getParameter("book") %> 
  3. <HR> 
  4. 查询结果为:......  

运行query.jsp,输入正常数据,如"安全编程技术":

 

提交,显示的结果是:

 

结果没有问题。但是该程序有漏洞。比如,客户输入"<I><FONT SIZE=7>Java</FONT></I>":

 

查询显示的结果为:

 

该问题是网站对输入的内容没有进行任何标记检查造成的。打开queryResult.jsp的客户端源代码,显示为:

 

更有甚者,我们可以输入某个网站上的一幅图片地址(此处引用google首页上的logo图片):

 

显示结果为:

 

很显然,结果很不正常!

以上只是说明了该表单提交没有对标记进行检查,还没有起到攻击的作用。为了进行攻击,我们将输入变成脚本:

 


【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

读 书 +更多

软件工程:实践者的研究方法

20多年以来,《软件工程:实践者的研究方法》一书是最受学生和行业专业人员欢迎的软件工程指南。它在全面而系统、概括而清晰地介绍软件工程...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× 51CTO学院双十二活动