8.4.1 跨站脚本攻击的原理(1)
《软件安全实现——安全编程技术》第8章Web编程安全,本章主要针对Web编程中的一些安全问题进行讲解。首先讲解了Web运行的原理,然后讲解了URL操作攻击,接下来针对Web程序的特性,讲解了四种页面之间传递状态的技术,并比较了它们的安全性,最后针对两种常见的安全问题:跨站脚本和SQL注入进行了详细叙述。本节为大家介绍跨站脚本攻击的原理。
- 作者:郭克华来源:清华大学出版社|2011-02-18 11:31
有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研
8.4 Web跨站脚本攻击
8.4.1 跨站脚本攻击的原理(1)
跨站脚本在英文中称为Cross-Site Scripting,缩写为CSS。但是,由于层叠样式表 (Cascading Style Sheets)的缩写也为CSS,为不与其混淆,特将跨站脚本缩写为XSS。
跨站脚本,顾名思义,就是恶意攻击者利用网站漏洞往Web页面里插入恶意代码,一般需要以下几个条件:
客户端访问的网站是一个有漏洞的网站,但是他没有意识到;
在这个网站中通过一些手段放入一段可以执行的代码,吸引客户执行(通过鼠标点击等);
客户点击后,代码执行,可以达到攻击目的。
XSS属于被动式的攻击。为了让读者了解XSS,首先我们举一个简单的例子。有一个应用,负责进行书本查询,代码如下:
query.jsp
- <%@ page language="java" import="java.util.*"
pageEncoding="gb2312"%>- 欢迎查询书本
- <form action="queryResult.jsp" method="post">
- 请您输入书本的信息:<BR>
- <input name="book" type="text" size="50">
- <input type="submit" value="查询">
- </form>
运行,效果如下:
![]() |
在文本框内输入查询信息,提交,能够到达queryResult.jsp显示结果。queryResult.jsp代码如下:
queryResult.jsp
- <%@ page language="java" import="java.util.*"
pageEncoding="gb2312"%>- 您查询的关键字是:<%=request.getParameter("book") %>
- <HR>
- 查询结果为:......
运行query.jsp,输入正常数据,如"安全编程技术":
![]() |
提交,显示的结果是:
![]() |
结果没有问题。但是该程序有漏洞。比如,客户输入"<I><FONT SIZE=7>Java</FONT></I>":
![]() |
查询显示的结果为:
![]() |
该问题是网站对输入的内容没有进行任何标记检查造成的。打开queryResult.jsp的客户端源代码,显示为:
![]() |
更有甚者,我们可以输入某个网站上的一幅图片地址(此处引用google首页上的logo图片):
![]() |
显示结果为:
![]() |
很显然,结果很不正常!
以上只是说明了该表单提交没有对标记进行检查,还没有起到攻击的作用。为了进行攻击,我们将输入变成脚本:
![]() |
回书目 上一节 下一节 |
- 大家都在看
- 猜你喜欢
- 24H热文
- 一周话题
- 本月最赞
- 3.3.1.1 标准9针串口引脚定义Python即学即用8.2.8 drawRoundRect方法:绘制圆角矩形一、中国制造2025主要内容深入理解Spring Cloud与微服务构建1.6 在iReport中使用表达式Expression6.9.1 企业文件服务器搭建案例(1)3.1.3 使用if…else if…else语句实现多分支选择结构
- 3.3.1.1 标准9针串口引脚定义7.2.3 用ALTER TABLE语句来创建索引8.2.8 drawRoundRect方法:绘制圆角矩形一、中国制造2025主要内容2.6.1 @Produces注解12.2 使用DROP INDEX删除索引深入理解Spring Cloud与微服务构建1.2.2 AT89S52 单片机的引脚图及各引脚功能说明
- 3.3.1.1 标准9针串口引脚定义深入理解Spring Cloud与微服务构建8.2.8 drawRoundRect方法:绘制圆角矩形一、中国制造2025主要内容7.2.3 用ALTER TABLE语句来创建索引2.3 三角函数的图像12.2 使用DROP INDEX删除索引2.6.1 @Produces注解
视频课程+更多
-
HTML5和CSS3新特性视频教程
讲师:Helen老师 - 姚环414420人学习过
-
韩立刚Windows Server 2008系统管理视频教程
讲师:韩立刚245257人学习过
-
非常好的 C++入门 视频课程
讲师:鲍松山92142人学习过
最新专题+更多
- 精选博文
- 论坛热帖
- 下载排行
- discuz7里面的mysql类dbstuffIDEA8实战-CXF版HelloWorld基于虚拟机的RHEL4系统成功安装vmwar详解SCVMM 2008中的虚拟机模板Java编程比C编程好吗?《精通Unix下C
- 华为USG6000防火墙.内网用户通过公网求助,数据库出现823、824错误关于思科无线控制器WLC2504 重启之后Hyper-v 2016 Linux安全启动咨询一个exchange的日志问题
- IOS教程 02OC47内存管理02set方法内IOS教程 02OC47内存管理02set方法内IOS教程 02OC47内存管理02set方法内IOS教程 02OC47内存管理02set方法内IOS教程 02OC47内存管理02set方法内
读 书 +更多
软件工程:实践者的研究方法
20多年以来,《软件工程:实践者的研究方法》一书是最受学生和行业专业人员欢迎的软件工程指南。它在全面而系统、概括而清晰地介绍软件工程...
-
订阅51CTO邮刊
点击这里查看样刊