No.14 笔记 | XSS漏洞:原理、类型与防御策略

一、HTML和JavaScript基础

1. HTML基础

  • HTML概述:超文本标记语言,用于实现页面跳转和显示数据。
  • 结构标准:包括<!doctype html>声明文档类型,<html>根标签,<head>头部标签和<body>主体标签等。
  • 标签分类:分为单标签(如<br/><hr/>)和双标签(如<a></a><html></html>)。
  • form标签:用于创建HTML表单,包含输入元素、菜单、文本区域等,用于向服务器传输数据。
  • iframe标签:允许在同一浏览器窗口中显示多个页面。

2. JavaScript基础

  • 概述:一种直译式脚本语言,与Java无关,可动态操作HTML内容、响应事件、读写HTML元素等。
  • 引入方式:可通过<script>标签直接在HTML中编写,也可引用外部文件。
  • 常用函数:包括alert()confirm()prompt()
  • 事件类型:包括鼠标事件、键盘事件和HTML事件,如onmouseoveronclick等。

3. Cookie和Session

  • Cookie:保存在客户端的文本文件,用于记录用户信息,分为本地Cookie和临时Cookie。
  • Session:存储在服务器的类HashTable结构,用于存放用户数据,通过SessionID标识。

二、XSS漏洞原理

  • 定义:XSS(Cross Site Scripting)是指攻击者将恶意脚本植入网页,当用户访问时脚本被执行。
  • 攻击流程
    1. 攻击者注入JS代码。
    2. 用户浏览包含恶意代码的页面。
    3. 浏览器执行恶意代码,达到攻击者目的。
  • 危害:包括弹框骚扰、挂马攻击、会话劫持、Cookie盗取、用户提权、账号盗取、DDOS攻击、蠕虫传播等。

三、XSS漏洞分类与利用

1. 反射型(非持续型)

  • 原理:恶意脚本附加在URL参数中,前端执行,不存储在后端。
  • 攻击步骤:攻击者构造特殊URL,用户访问后,服务端返回拼接后的HTML,浏览器执行恶意代码。

2. 存储型(持续型)

  • 原理:恶意代码存储在服务器,当用户浏览相关页面时执行,持久性存储。
  • 攻击步骤:攻击者将恶意代码提交到目标网站,用户访问时,服务端从数据库取出并返回给浏览器执行。

3. DOM型

  • 原理:XSS代码不需服务端解析,由浏览器端DOM解析触发。
  • 攻击步骤:攻击者构造特殊URL,用户访问后,浏览器端直接执行恶意代码。

四、XSS漏洞绕过方法

  1. 大小写绕过:如<ScRiPt>alert(1)</ScRiPt>
  2. 双写绕过:如<sc<script>ript>alert(/xss/)</script>
  3. 反引号绕过:绕过单双引号过滤。
  4. 关闭标签绕过:利用<>关闭标签。
  5. 超链接标签绕过:如<a href= >1</a>
  6. 图片链接绕过:如<img src=1 onerror=alert(1)>
  7. 编码绕过:利用八进制、十进制、十六进制编码、HTML实体编码、URL编码、base64等,以及空格、回车、换行符、tab、混淆等。

五、XSS漏洞防御

  1. CSP内容安全策略:禁止加载外域代码、外域提交,禁止内联脚本执行和未授权脚本执行。
  2. 设置HttpOnly:防止Cookie被窃取。
  3. 输入输出检查:在前端和后端进行,采用白名单或黑名单验证,对输出字符进行HTML编码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/888716.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docsify搭建个人博客

前提&#xff1a;电脑安装了Node.js 安装到本地 CMD命令下输入node -v查看是否已经安装了Node.js 安装docsify-cli工具&#xff1a;npm i docsify-cli -g 使用git下载docsify-Plus项目&#xff0c;Gitee地址&#xff1a;https://gitee.com/librarycodes/docsify-plus cd…

Linux安装RabbitMQ安装

1. RabbitMQ介绍 1.1 RabbitMQ关键特性 异步消息传递&#xff1a;允许应用程序在不直接进行网络调用的情况下交换消息。 可靠性&#xff1a;支持消息持久化&#xff0c;确保消息不会在系统故障时丢失。 灵活的路由&#xff1a;支持多种路由选项&#xff0c;包括直接、主题、…

建筑物能耗模拟软件EnergyPlus下载安装及使用

建筑物能耗模拟软件EnergyPlus下载安装及使用 EnergyPlus概述EnergyPlus下载及安装EnergyPlus安装 EnergyPlus使用参考 建筑物能耗模拟软件是一种在建筑设计阶段使用的工具&#xff0c;能够透过电脑模拟预测未来建筑物的能耗情况&#xff0c;达成建筑性能模拟。这有助于评估不同…

C# HttpClient请求URL重定向后丢失Authorization认证头信息 .Net Core Web Api

问题: 使用.Net 入库Doris请求FE端口后,FE响应重定向到其他BE节点出现的认证失败问题。 搜查官方文档后发现&#xff1a; HttpWebRequest.AllowAutoRedirect Property (System.Net) | Microsoft Learn 微软提供的http类库HttpClient &#xff08;HttpWebRequest\WebClient已不…

python的内存管理机制

python的内存管理机制主要分为三个部分&#xff1a;引用计数、垃圾回收和内存池机制。 引用计数机制&#xff1a; python通过维护每个对象的引用计数来跟踪内存中的对象。当对象被创建时就会有一个引用计数&#xff0c;当对象不再被使用时&#xff0c;引用计数为0&#xff0c…

5.错误处理在存储过程中的重要性(5/10)

错误处理在存储过程中的重要性 引言 在数据库编程中&#xff0c;存储过程是一种重要的组件&#xff0c;它允许用户将一系列SQL语句封装成一个单元&#xff0c;以便重用和简化数据库操作。然而&#xff0c;像任何编程任务一样&#xff0c;存储过程中的代码可能会遇到错误或异常…

攻防世界---->[简单] 初识RSA

做题笔记。 下载 是一个.py的文件。 用 Notepad打开瞅瞅。 分析&#xff1a; L (p-1)*(q-1) dgmpy2.invert(e,L) 求逆元快速算出来&#xff1a;invert(e,φ(N)) 求出d值。 n p*q pq p*(q-1) qp q*(p-1) L 【q*(p-1) * p*(q-1)】 // p*q >>> (p-1)*(…

通信工程学习:什么是OSPF开放式最短路径优先

OSPF&#xff1a;开放式最短路径优先 OSPF&#xff08;Open Shortest Path First&#xff0c;开放式最短路径优先&#xff09;是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;被广泛应用于计算机网络中&#xff0c;特别是在构建大型和复杂的网络时。以下是对OSPF的…

Pikachu-url重定向-不安全的url跳转

不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。 url跳转比较直接的危害是: …

Dev-C++ 安装与使用(dev c++官网)(已解决)

1.Dev-C的安装 ①打开Dev-C的官网(https://sourceforge.net/projects/orwelldevcpp/ )&#xff1b;点击Download(下载)&#xff0c;等待5秒后开始下载。 ②点开下载好的EXE文件&#xff0c;等待加载完成(如图)。 右键&#xff0c;以管理员身份 运行安装包。 选择English(英语),…

JVS·智能BI数据可视化图表:普通列表与分组列表配置全解析

使用场景 在可视化配置中&#xff0c;很多场景中需要图形和详细信息的融合展示&#xff0c;那么在图表中可以新增普通列表与分组列表的配置。如下图所示&#xff1a; 配置说明 1、新增组件&#xff1a;配置入口如下图所示&#xff0c;新增组件时&#xff0c;选择普通列表与分…

浅谈司库决策分析体系建设

一 、前言&#xff1a;司库管理体系建设 2022年国务院国资委印发《关于推动中央企业加快司库体系建设进一步加强资金管理的意见》&#xff0c;指出司库管理体系是企业集团依托财务公司、资金中心等管理平台&#xff0c;运用现代网络信息技术&#xff0c;以资金集中和信息集中为…

【iOS】计算器仿写

计算器 前言四则运算View层Masonry布局 非法输入的逻辑 前言 前两周进行了计算器的仿写&#xff0c;运用了刚学习的Masonry布局以及MVC框架&#xff0c;同时学习了简单的四则运算&#xff0c;今天撰写博客对计算器的仿写进行一个总结&#xff0c;整理归纳期间遇到的问题和收获…

污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标,10000余张图像,yolo格式目标检测,9GB数据量。

污水排放口细粒度检测数据集&#xff0c;污-水排放口的类型包括10类目标&#xff08;1 合流下水道&#xff0c;2 雨水&#xff0c;3 工业废水&#xff0c;4 农业排水&#xff0c;5 牲畜养殖&#xff0c;6 水产养殖&#xff0c;7 地表径流&#xff0c;8 废水处理厂&…

PHP中的HTTP请求:获取taobao商品数据的艺术

在电子商务的世界里&#xff0c;数据是宝贵的资产。对于开发者来说&#xff0c;能够快速准确地获取商品数据是一项重要的技能。PHP作为一种流行的服务器端脚本语言&#xff0c;结合cURL扩展&#xff0c;可以轻松实现HTTP请求&#xff0c;从而获取API数据。本文将介绍如何在PHP中…

使用MTVerseXR SDK实现VR串流

1、概述​ MTVerseXR SDK 是摩尔线程GPU加速的虚拟现实&#xff08;VR&#xff09;流媒体平台&#xff0c;专门用于从远程服务器流式传输基于标准OpenXR的应用程序。MTVerseXR可以通过Wi-Fi和USB流式将VR内容从Windows服务器流式传输到XR客户端设备, 使相对性能低的VR客户端可…

c++(多态)

多态的定义 多态是⼀个继承关系的下的类对象&#xff0c;去调⽤同⼀函数&#xff0c;产⽣了不同的⾏为 ⽐如Student继承了Person。Person对象买票全价&#xff0c;Student对象优惠买票。 多态实现的条件 • 必须指针或者引⽤调⽤虚函数 第⼀必须是基类的指针或引⽤&#xff0c;…

性能测试-JMeter(1)

性能测试工具 主流性能测试工具LoadrunnerJMeter JMeter环境安装JMeter功能概要JDK常用文件目录介绍JMeter元件和组件介绍元件的基本介绍组件的基本介绍 JMeter元件作用域和执行顺序JMeter第一个案例线程组HTTP请求查看结果树 JMeter参数化&#xff08;重点&#xff09;用户定义…

涛思数据库安装和卸载

安装 cd opt/taos/TDengine-server-2.4.0.5 sudo ./install.sh 启动taos​ 安装后&#xff0c;请使用 systemctl 命令来启动 TDengine 的服务进程 systemctl start taosd检查服务是否正常工作&#xff1a; systemctl status taosd 升级 3.0 版在之前版本的基础上&#x…

Vue3 集成 json-editor-vue3

简介 快速编辑json数据&#xff0c;还需要支持全屏编辑&#xff0c;以及json校验。 https://github.com/guyue88/json-editor-vue3 安装依赖 npm install json-editor-vue3 --save 引入 在 main.js中添加 import “jsoneditor”; 全局引入 import Vue from vue import Json…