IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> XSS漏洞攻守之道 -> 正文阅读

[网络协议]XSS漏洞攻守之道

1.1 什么是XSS漏洞

????????跨站脚本攻击(Cross Site Script,为了不和css混淆,故将其缩写为XSS)通常发生在客户端,攻击者在Web页面中插入恶意的JavaScript代码(包括VBScript和ActionScript代码等),用户浏览此页面时,会执行这些恶意代码,从而使用户受到攻击。本质:是一种HTML的注入,恶意代码数据当成了HTML代码的一部分被执行。

1.2 XSS的攻击形式

????????DOM跨站攻击:攻击者在为规范JavaScript的HTML页面中插入一段恶意代码,直接操作用户数据的数据,在页面最终展示会执行恶意脚本,从而达到攻击目的。与其他攻击形式的不同之处是DOM跨站攻击不与服务端进行数据交互。

????????反射型跨站脚本攻击:攻击者发送一个携带恶意脚本的URL给用户并诱导其访问,浏览器会执行页面嵌入的恶意脚本,从而达到攻击目的。

???????? 存储型跨站脚本攻击:攻击者利用程序提供的添加、修改数据功能,将恶意脚本数据存储到服务器中,当其他用户浏览展示该数据的页面时,浏览器会执行页面嵌入的恶意脚本,从而达到攻击目的。

1.3 XSS漏洞的危害

????????窃取信息(如:盗取用户的cookie,伪造用户身份登录)

????????钓鱼欺诈

????????蠕虫攻击

1.4 XSS漏洞修复或防守方法

????????在了解了常见的攻击类型及手段之后,需要针对不同的应用程序及场景进行漏洞防护。针对前端静态模板的Web应用,如freemarker、velocity等可以从静态模板入手封装公共方法对用户输入数据进行转义操作;前后端分离的应用可在服务端web接口层面统一过滤转义用户数据。本质:过滤转义恶意代码,使其无法执行。

? ? ? ? 下面是不同的场景下,对数据的转义操作。

1.4.1 在HTML页面标签中或标签属性值中

1.页面HTML中:<div>$name</div>
2.标签属性中:<input type="text" name ="name" value ="$name">
以上两种需要对$name中的以下字符进行转义:
    左尖括号:<转成&lt;
    右尖括号:>转成&gt;
    单引号:'转成&#39;
    双引号:"转成&quot;

3.标签onclick等事件函数参数中:<button type="button" onclick="click($param)">Button</button>
需要对$param中的以下字符进行转义:
    左尖括号:<转成&lt;
    右尖括号:>转成&gt;
    &符号:&转成&amp;
    单引号:'转成\&#39;
    双引号:"转成\&quot;
    反斜杠:\转成\\
    正斜杠:/转成\/
    换行符:\n转成\n
    回车符:\r转成\r

4.标签url参数中:<a href="http://www.xxx.com/param=$param">链接</a>
需要对$param中的以下字符进行转义:
    考虑HTML和JS环境:
        单引号:'转义成%27
        双引号:"转义成%22
        左尖括号:<转义成%3C
        右尖括号:>转义成%3E
        正斜杠:/转义成%2F
        反斜杠:\转义成%5C
    考虑字符对URL的影响:
        /转义成%2F
        ?转义成%3F
        #转义成%23
        &转义成%26
        %转义成%25
        =转义成%3D

1.4.2?在JS代码中

1. 在script标签中
<script>
    var name="$name";
</script>

需要对$name中的以下字符进行转义
    单引号:'转成\'
    双引号:"转成\"
    反斜杠:\转成\\
    正斜杠:/转成\/
    换行符:\n转成\n
    回车符:\r转成\r

2.在JS中innerHTML插入字符串时
<script>
   document.getElementById("id").innerHTML ="$html";
</script>
需要对$html中的以下字符进行转义:
    左尖括号:<转成&lt;
    右尖括号:>转成&gt;
    单引号:'转成\'
    双引号:"转成\"
    反斜杠:\转成\\
    正斜杠:/转成\/
    换行符:\n转成\n
    回车符:\r转成\r

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 09:03:26  更:2022-04-30 09:03:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 4:28:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码