| |
|
开发:
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 漏洞 |
(一)简介????????XSS(Cross Site Scripting)即跨站脚本攻击。攻击者在Web页面或URL里插入恶意的JavaScript脚本,而服务器与客户端信任用户的输入,没有对内容进行限制和过滤。当用户浏览网站时,嵌入的恶意代码会被浏览器解析执行。 漏洞危害:1. 窃取帐号,入侵者可以冒充用户身份登录后台。使得攻击者具有恶意操纵数据的能力,包括读取、更改、添加、删除; 2. 网站挂马。先将恶意攻击代码嵌入到Web应用程序之中。当用户浏览该页面时,用户的计算机会被植入木马; 3. 广告植入和钓鱼。攻击者可植入广告,或发送钓鱼信息,严重影响到用户的正常使用和体验; (二)漏洞类型1. 反射型<非持久化> ????????前端发出请求时,XSS代码作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器被解析执行; 常见位置:URL(如:日期查询参数)、搜索框、查询框 2. 存储型<持久化> ????????提交的代码会存储在服务器端的数据库、内存、文件系统; 常见位置:论坛评论、个人信息修改、富文本编辑器 3. DOM型????????基于文档对象模型(Document Object Model)的一种漏洞。它的攻击代码并不需要服务器解析响应,其依赖浏览器端的DOM解析。客户端上的JavaScript脚本可以访问浏览器的DOM并修改页面的内容,不依赖服务器的数据,直接从浏览器端获取数据并执行; ????????在客户端直接输出DOM内容的时候极易触发DOM型XSS漏洞, 如:document.getElementByld(“x’).innerHTML、document.write) (三)XSS 检测漏洞位置判断1. 浏览器存在交互 -> 用户可以自定义输入内容; 2.?输入能返回到前端的页面上被浏览器当成脚本语言解析执行; 3. 使用审查元素,输入的特殊字符未被实体化标签 -> > <; 自动化工具 XSS - StrikeXSStrike is a Cross Site Scripting detection suite equipped with four hand written parsers, an intelligent payload generator, a powerful fuzzing engine and an incredibly fast crawler. 参考:?网络安全-XSStrike中文手册(自学笔记)_lady_killer9的博客-CSDN博客_xsstrike 下载地址:GitHub - Ra1dhunter/xss-strike XSS 利用平台自行搭建:github : https://github.com/trysec/BlueLotus_XSSReceiver 公开平台:1.?登录 - Wordpress博客学习XSS平台 ?2.?NGXPT ?3.??XSS Hunter 常见PAYLOAD (注意闭合)事件触发: '"><img src=0 οnerrοr=alert(document.cookie)>;// 内部标签: '"><script>alert(document.cookie)</script>;// 伪协议:?'"><a href=javascript:alert(document.cookie)>xss</a>;// XSS绕过由于网站可能存在过滤机制,会对XSS攻击的敏感函数进行过滤: 1. 大小写转换; 2. 引号的使用; 3. 左斜线代替空格; 4. 对标签内的属性进行转码; 5.双写绕过; (四)安全开发与修复网页安全政策 CSP(Content Security Policy)????????CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。开启CSP策略的方法,一种是通过 HTTP 头信息的 详情见这篇文章:?Content Security Policy 入门教程 - 阮一峰的网络日志 实体化标签????????验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。具体如下 : 1. 输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。 2. 输出编码:数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。 3. 明确指定输出的编码方式:不要允许攻击者为你的用户选择编码方式(如ISO 8859-1或 UTF 8)。 4. 注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如"<" ">"或类似"script"的关键字),很容易被XSS变种攻击绕过验证机制。 5. 警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。对客户端提交的数据进行过滤,一般建议过滤掉双引号(”)、尖括号(<、>)等特殊字符,或者对客户端提交的数据中包含的特殊字符进行实体转换,比如将双引号(”)转换成其实体形式",<对应的实体形式是<,<对应的实体形式是>以下为需过滤的常见字符: [1] |(竖线符号) [2] & (& 符号) [3];(分号) [4] $(美元符号) [5] %(百分比符号) [6] @(at 符号) [7] '(单引号) [8] "(引号) [9] \'(反斜杠转义单引号) [10] \"(反斜杠转义引号) [11] <>(尖括号) [12] ()(括号) [13] +(加号) [14] CR(回车符,ASCII 0x0d) [15] LF(换行,ASCII 0x0a) [16] ,(逗号) [17] \(反斜杠) 2、在请求返回页面关键字符进行转义; [1] “(双引号):" [2] ’ (单引号):&apos [3] &(&符号):& [4] <(左尖括号):< [5] >(右尖括号):> 在不影响应用的前提下,建议将cookie标记为httpOnly,同时禁用TRACE方法。 Java实现XSS防御PHP实现XSS防御PHP直接输出html的,可以采用以下的方法进行过滤: 1. htmlspecialchars函数; 2. htmlentities函数; 3. HTMLPurifier.auto.php插件; 4. RemoveXss函数; PHP输出到JS代码中,或者开发Json API的,则需要前端在JS中进行过滤: 1. 尽量使用innerText(IE)和textContent(Firefox),也就是jQuery的text()来输出文本内容; 2. 必须要用innerHTML等等函数,则需要做类似php的htmlspecialchars的过滤; 富文本编辑器不含有富文本编辑器(自定义样式)且没有使用DOM的站点输入:过滤双引号,单引号,左右尖括号,分号; 输出:对上述字符进行HTML实体编码即可; 不含有富文本编辑器(自定义样式)但使用DOM的站点输入:在DOM中转义双引号,单引号,左右尖括号,分号; 输出:在输出之前进行编码,如:innerHTML=encodeHTML(output); 含有富文本编辑器(自定义样式)但没有使用DOM的站点输入:过滤双引号,单引号,分号; 输出:对上述字符进行HTML实体编码即可; (五)深度收藏指南
(以上图片资源来自某安全公众号,收藏过久忘了是哪个,如有侵权请告知) |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 1:35:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |