XSS详解【1】---基本概念和攻击原理
这节主要讲述XSS的基本概念和攻击原理。
一 XSS基本概念
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
二 攻击原理
XSS的形成根因在于攻击者精心构造的非法输入在受害者浏览器处解析为代码,被浏览器执行,从而造成损害。如果网站使用MVC架构,那么XSS就发生在View层,在应用拼接变量到HTML页面时发生。
根据攻击方式不同,XSS又分为反射型XSS、存储型XSS和基于Dom的XSS,三种类型。
2.1 反射型XSS
反射型XSS,也叫非持久型XSS。攻击者构造一个包含脚本的URL,并让正常用户打开这个url,这样XSS代码出现在请求URL中,作为参数提交到服务器,服务器对参数没有进行XSS相关处理,直接解析并响应。响应结果中包含XSS代码,最后浏览器解析并执行。
攻击过程中恶意数据被服务器“反弹”给用户的浏览器,故称为反射型XSS。
特点:反射型XSS主要服务端没有对外来数据进行XSS处理,就直接发送给浏览器,导致出现XSS攻击。
实例:
A是攻击者,B是被攻击者,X是网站
1)A构造了一个包含恶意脚本参数的url,这个url的域名是X网站;
例如:http://x.com/?name=<script>alert("hey!");</script>
说明:上边构造的name参数,值是一个脚本,这个脚本里的JavaScript代码很有可能会执行一些有危害的操作,例如:自动购买、删除等恶意操作。
2)A将这个URL通过各种方式发送给B,B点击这个链接;
3)X网站后台将对应链接内容参数解析,并将name参数值当做页面内容直接返回给B的浏览器;
注意:这里X网站后台没有对name参数进行XSS处理。
4)B的浏览器中直接执行A构造的脚本,导致攻击成功。
注意:这种url中构造的脚本参数,chrome浏览器做了安全防护,是无法执行的,而firefox是可以执行的。
黑客往往通过电子邮箱等方式诱惑用户点击某个恶意链接,才能攻击成功。这种情况下,受害者相对较少。
2.2 存储型XSS
存储型XSS,也叫持久型XSS,主要是将XSS代码发送到服务器(不管是数据库、内存还是文件系统等),然后在下次请求页面的时候,服务器从数据库中读取数据,没有做XSS相关处理,直接输出给浏览器,导致攻击代码被执行。
实例:
最典型的就是留言板XSS。用户提交了一条包含XSS代码的留言到数据库。当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。浏览器发现有XSS代码,就当做正常的HTML和JS解析执行。XSS攻击就发生了。
2.3 基于DOM的XSS
这种情况不依赖于是否将恶意程序放置于服务器,而是修改页面的DOM节点,效果上说也属于反射型XSS。例如,攻击者输入恶意字符串,构建出带有恶意程序的html页面,然后诱导用户点击,点击后,将造成xss攻击。
三 XSS的根因
XSS之所以会发生,就是由于在输出不可信数据到浏览器的时候,没有对数据中潜藏的可执行代码做处理,导致代码被浏览器执行。
四 参考资料
https://www.cnblogs.com/mao2080/p/9460397.html
https://baike.baidu.com/item/XSS攻击/954065?fr=aladdin
XSS详解【1】---基本概念和攻击原理的更多相关文章
- IPv6技术详解:基本概念、应用现状、技术实践(下篇)
本文来自微信技术架构部的原创技术分享. 1.前言 在上篇<IPv6技术详解:基本概念.应用现状.技术实践(上篇)>,我们讲解了IPV6的基本概念. 本篇将继续从以下方面展开对IPV6的讲解 ...
- IPv6技术详解:基本概念、应用现状、技术实践(上篇)
本文来自微信技术架构部的原创技术分享. 1.前言 普及IPV6喊了多少年了,连苹果的APP上架App Store也早已强制IPV6的支持,然并卵,因为历史遗留问题,即使在IPV4地址如果饥荒的情况下, ...
- 【详细解析】MySQL索引详解( 索引概念、6大索引类型、key 和 index 的区别、其他索引方式)
[详细解析]MySQL索引详解( 索引概念.6大索引类型.key 和 index 的区别.其他索引方式) MySQL索引的概念: 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分 ...
- Shiro 安全框架详解二(概念+权限案例实现)
Shiro 安全框架详解二 总结内容 一.登录认证 二.Shiro 授权 1. 概念 2. 授权流程图 三.基于 ini 的授权认证案例实现 1. 实现原理图 2. 实现代码 2.1 添加 maven ...
- Shiro 安全框架详解一(概念+登录案例实现)
shiro 安全框架详细教程 总结内容 一.RBAC 的概念 二.两种常用的权限管理框架 1. Apache Shiro 2. Spring Security 3. Shiro 和 Spring Se ...
- HTTPS详解二:SSL / TLS 工作原理和详细握手过程
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...
- RocketMQ详解(四)核心设计原理
专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...
- Java网络编程和NIO详解6:Linux epoll实现原理详解
Java网络编程和NIO详解6:Linux epoll实现原理详解 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO h ...
- RocketMQ详解(三)启动运行原理
专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...
随机推荐
- Spring Boot 配置拦截器方式
其实spring boot拦截器的配置方式和springMVC差不多,只有一些小的改变需要注意下就ok了.下面主要介绍两种常用的拦截器: 一.基于URL实现的拦截器: public class Log ...
- springboot快速创建项目框架
一.项目框架准备 1.1 新建maven空项目,并在pom中引入依赖 <parent> <groupId>org.springframework.boot</groupI ...
- Win10多用户同时登陆远程桌面
想记录一下最近解决的一些问题,发现还是博客最合适,虽然之前从来没写过,希望以后能养成这个好习惯. 家里有一台台式机装着Win10,还有一台macbook,平时遇到需要用Win系统又不想坐在书桌前时,我 ...
- 剑指offer-面试题59_1-滑动窗口的最大值-数组
/* 题目: 链接:https://www.nowcoder.com/questionTerminal/1624bc35a45c42c0bc17d17fa0cba788 来源:牛客网 给定一个数组和滑 ...
- AGC011-E Increasing Numbers
题意 给定一个数\(n\),\(n≤10^{500,000}\),问\(n\)最少可以拆分成几个不降数的和.一个不降数是在十进制位下,从高位往低位看,每个数都不会比高位的数更小的数 做法 不降数可以拆 ...
- 安装NTP到CentOS(YUM)
运行环境 系统版本:CentOS Linux release 7.3.1611 (Core) 软件版本:Docker 17.12.1-ce 硬件要求:无 安装过程 1.安装YUM-EPEL存储库 YU ...
- switch 语句 总结笔记
1.switch 语句 语法: switch(expression) { case value1 : statement1; break; case value2 : statement2; brea ...
- HTML指定页面编码
HTML指定页面编码 <meta charset="UTF-8" />
- 通俗易懂的RESTful API实践详解(含代码)
来源:点击进入 点击上方链接,版面更好 一.什么是RESTful REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露,URI 的设计只要负责把资源通过合理方式暴露出来就可以了,对 ...
- wxpython 简单例子:显示文本框的窗口显示鼠标位置
简单例子来自教程: #!/bin/env python import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__ ...