本文优先发布于简书https://www.jianshu.com/p/04e0f8971890

1、百度百科
XSS,跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,通常将跨站脚本攻击缩写为XSS。
XSS攻击,通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。
攻击成功后,攻击者可能得到包括但不限于更
高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
参考:[百度百科](https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/954065?fr=aladdin)
***
2、攻击条件
1)向web页面注入恶意代码;
2)这些恶意代码能够被浏览器成功的执行
***
3、XSS攻击类型
1)反射型XSS(非持久型跨站):反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
这类通常使用URL,具体流程:
①攻击者构造出特殊的 URL,其中包含恶意代码。
②用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
③恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在用户电脑上。
④用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
⑤恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里。
反射型 XSS 漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。
由于需要用户主动打开恶意的 URL 才能生效,攻击者往往会结合多种手段诱导用户点击。
POST 的内容也可以触发反射型 XSS,只不过其触发条件比较苛刻(需要构造表单提交页面,并引导用户点击),所以非常少见。
示例:
①`http://xxx/xsstest?key=<script>alert("XSS")</script>`
②`http://xxx/xsstest?key=<img src='w.123' onerror='alert("XSS")'>`
③`http://xxx/xsstest?key=<a onclick='alert("XSS")'>点我</a>`
2)存储型XSS(持久型跨站):最直接的危害类型,跨站代码存储在服务器(数据库)
攻击流程:
①攻击者构造出特殊的 URL,其中包含恶意代码。
②用户打开带有恶意代码的 URL。
③用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
④恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。
示例:
①窃取用户信息,如cookie,token,账号密码等。
`<script>alert("xss")</script>`
②生成一些恶意图片,文字,用户点击图片或文字,跳转至相应目标网站
`<img onclick="window.location.href='http://xxx.com'" width='300' src='img/testxss.jpg'/>`
③劫持流量实现恶意跳转
`<script>window.location.href="http://xxx.com";</script>`
3)DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
攻击流程:
①攻击者构造出特殊的 URL,其中包含恶意代码。
②用户打开带有恶意代码的 URL。
③用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
④恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。
参考:
[网络攻击-XSS攻击详解](https://www.cnblogs.com/mao2080/p/9460397.html)
[web安全之XSS攻击](https://www.cnblogs.com/stefanieszx11/p/8602138.html)
[前端安全系列(一):如何防止XSS攻击?](https://www.freebuf.com/articles/web/185654.html)
***
4、漏洞总结
①在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。
②在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。
③在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。
④在标签的 href、src 等属性中,包含 javascript: 等可执行代码。
⑤在 onload、onerror、onclick 等事件中,注入不受控制代码。
⑥在 style 属性和标签中,包含类似 background-image:url("javascript:…"); 的代码(新版本浏览器已经可以防范)。
⑦在 style 属性和标签中,包含类似 expression(…) 的 CSS 表达式代码(新版本浏览器已经可以防范)。
5、防御规则
1)不要在允许位置插入不可信数据
2)在向HTML元素内容插入不可信数据前对HTML解码
3)在向HTML常见属性插入不可信数据前进行属性解码
4)在向HTML JavaScript DATA Values插入不可信数据前,进行JavaScript解码
5)在向HTML样式属性插入不可信数据前,进行CSS解码
6)在向HTML URL属性插入不可信数据前,进行URL解码
***
5、防御攻击方法
①验证所有输入数据,有效监测攻击;
②对所有输出数据进行适当编码,防止任何已成功注入的脚本在浏览器端运行;
③输入长度做限制(对于不受信任的输入,都应该限定一个合理的长度。虽然无法完全防止 XSS 发生,但可以增加 XSS 攻击的难度);
④禁止加载外域代码,防止复杂的攻击逻辑;
⑤禁止外域提交,网站被攻击后,用户的数据不会泄露到外域;
⑥禁止内联脚本执行(规则较严格,目前发现 GitHub 使用);
⑦禁止未授权的脚本执行(新特性,Google Map 移动版在使用);
⑧合理使用上报可以及时发现 XSS,利于尽快修复问题;
⑨禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie。

XSS攻击-原理学习的更多相关文章

  1. PHP 安全三板斧:过滤、验证和转义之转义篇 & Blade模板引擎避免XSS攻击原理探究

    PHP 转义 实现 把输出渲染成网页或API响应时,一定要转义输出,这也是一种防护措施,能避免渲染恶意代码,造成XSS攻击,还能防止应用的用户无意中执行恶意代码. 我们可以使用前面提到的 htmlen ...

  2. XSS攻击原理、示例和防范措施

    XSS攻击 XSS(Cross-Site Scripting,跨站脚本)攻击历史悠久,是危害范围非常广的攻击方式. Cross-Site Stripting的缩写本应该是CSS,但是为了避免和Casc ...

  3. 前端Hack之XSS攻击个人学习笔记

    简单概述 **        此篇系本人两周来学习XSS的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程中所写,如有任 ...

  4. web安全之XSS攻击原理及防范

    阅读目录 一:什么是XSS攻击? 二:反射型XSS 三:存储型XSS 四:DOM-based型XSS 五:SQL注入 六:XSS如何防范? 1. cookie安全策略 2. X-XSS-Protect ...

  5. 155.XSS攻击原理

    XSS攻击: XSS(Cross Site Script)攻击叫做跨站脚本攻击,他的原理是用户使用具有XSS漏洞的网站的时候,向这个网站提交一些恶意代码,当用户在访问这个网站的某个页面的时候,这个恶意 ...

  6. XSS攻击原理及防御措施

    概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列 表,然后向联系 ...

  7. 浅谈XSS攻击原理与解决方法

    概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人 ...

  8. xss攻击原理与解决方法

    概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列 表,然后向联系 ...

  9. XSS攻击原理

    本文转载的地址:http://www.2cto.com/Article/201209/156182.html Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意h ...

随机推荐

  1. offsetX、clientX、screenX、pageX、layerX

    pageX/Y 原点相对于文档窗口左上角. offsetX/Y 原点相对于触发事件元素的左上角,需要注意的是,offset是有负值的,如果你的元素有边框,那么offset会是负值. (黑色为鼠标点击点 ...

  2. 原生js实现的一个随机颜色的简单效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...

  3. WPF注册热键后处理热键消息(非winform方式)

    由于最近在做wpf版的截图软件,在处理全局热键的时候,发现国内博客使用的都是winform窗体的键盘处理方式,此方式需要使用winform的动态库,如此不协调的代码让我开始在github中寻找相关代码 ...

  4. vs2019+cmake实现Linux远程开发

    在上一篇文章中我们介绍了使用vs2019作为远程Linux系统的开发环境,但我们是创建的传统的sln项目,而对于Linux开发者来说以autotools或是cmake进行项目结构的组织更为简单直观,也 ...

  5. MSIL实用指南-比较运算

    数值的比较就是大于.小于.等于.大于等于.小于等于.不等于,它们的运算结果都是布尔值.大于.小于.等于有直接对应的指令,分别是Cgt.Clt.Ceq.大于等于.小于等于.不等于没有直接对应的指令,它的 ...

  6. ACM-数论-广义欧拉降幂

    https://www.cnblogs.com/31415926535x/p/11447033.html 曾今一时的懒,造就今日的泪 记得半年前去武大参加的省赛,当时的A题就是一个广义欧拉降幂的板子题 ...

  7. filter修改post参数

    前景:公司项目web渗透测试中提出管理登录时,传输密码不能为明文,需要加密传输,但是迫于系统架构,后端代码不能修改,只能在filter中解密参数. 1.前端加密处理: <script type= ...

  8. 企业代码版本管理之争:TrunkBased vs GitFlow vs AoneFlow vs OneFlow vs ExeFlow

    目录 引言 TrunkBased GitFlow AoneFlow OneFlow ExeFlow 综述 引言 网络上版本管理系统之争持久而喧嚣,依照声量来讲目前应该是Git占了较大的优势.不过我们本 ...

  9. Dart语法学习

    Dart语法学习 目录 参考资料 语言特性 关键字 变量与常量 数据类型 运算符 operators 控制流程语句 异常 Exceptions 函数 Function 类 Class 类-方法 类-抽 ...

  10. 自制轮子 canvas tree

    这是树的效果 这个树拥有的功能有 1.小地图显示 2.小地图点击快速定位 3.点击加减显示根节点 4.基本的数显示 5.节点拖拽 6.点击头像跳转到相关页面 7.使用直角线和直线选择 8.画布自适应 ...