XSS跨站脚本攻击及防护

news2024/11/13 18:56:57

目录

一、初识XSS跨站脚本

1.1 XSS玫击概述

1.2 XSS漏洞攻击本质

1.3 XSS攻击的危害

1.4 XSS玫击原理

1.5 XSS攻击过程

1.6 XSS攻击特点

1.6.1 间接攻击

1.6.2 可更正性

1.6.3 传播性强

二、XSS攻击与防护

2.1 XSS攻击分类

2.1.1 存储型XSS

2.1.2 反射型XSS

2.1.3 DOM型XSS

2.2 XSS攻击过程

2.2.1 存储型XSS攻击过程

2.2.2 反射型XSS攻击过程

2.2.3 反射型XSS跟存储型XSS的区别

2.2.4 DOM型XSS的攻击步骤

2.2.5 DOM型XSS跟前两种XSS的区别

2.2.6 三者区别

2.3 XSS攻击实战

2.3.1 盗取Cookie:诱骗点击

2.3.2 利用存储型XSS攻击,跨站的到一个木马网站

2.3.3 XSS入侵方式

2.4 XSS攻击防范

2.4.1 攻击者提交恶意代码

2.4.2 浏览器拉行恶意代码


一、初识XSS跨站脚本

1.1 XSS玫击概述

XSS又叫CSS(Cross Site Scripting),即跨站脚本攻击,是最常见的 Web 应用程序安全漏洞之一。在绝大多数网络攻击中都是把XSS作为漏洞链中的第一环,通过XSS,黑客可以得到的最直接利益就是拿到用户浏览器的 cookie,从而变相盗取用户的账号密码,进而非授权的获取关键的隐私信息。

XSS攻击是一种客户端访问嵌入有恶意脚本代码的Web页面,从而盗取信息、利用身份等的一种攻击行为。XSS属于客户端攻击,受害者最终是用户。XSS的传播性极强,由于 web 的特点是轻量级灵活性高,每个用户每天都可能访问很多 web 站点,每个 web 站点每天都有成千上万的来访。如果将XSS攻击配合一些系统内核级的漏洞,完全可能在几个小时之内击垮几百万台智能设备。

1.2 XSS漏洞攻击本质

  • 恶意代码未经过滤,与网站正常的代码混在一起
  • 浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行

1.3 XSS攻击的危害

  • 盗取信息,包括用户账号,口令及有价值的敏感信息。
  • 控制企业数据,包括读取、基改、添加、删除企业敏感数据的能力。
  • 强制进行非法转账
  • 强制发送电子邮件
  • 网站挂马
  • 控制受害者机器向其它网站发起攻击

1.4 XSS玫击原理

XSS是指攻击者在网页中嵌入客户端脚本,通常是JavaScript 编写的恶意代码,也有使用其他客户端脚本语言编写的。当用户使用浏览器浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行。

Javascript 可以用来获取用户的 Cookie、改变网页内容、URL 跳转,攻击者可以在 script 标签中输入 Javascript 代码,如 alert(/xss/),实现一些“特殊效果”。

1.5 XSS攻击过程

1.6 XSS攻击特点

1.6.1 间接攻击

XSS玫击的最终目标是针对终端用户,即客户端,(包括获取账号密码,种马等),但是攻击代码是注入到目标网站

1.6.2 可更正性

XSS攻击产生的根本原因是Web网站对用户的输入过滤不足,是一种可更正性错误。

1.6.3 传播性强

攻击代码是注入到目标网站,每个用户每天都可能访问很多 web 站点,每个 web 站点每天都有成千上万的访客。

二、XSS攻击与防护

2.1 XSS攻击分类

2.1.1 存储型XSS

持久性:攻击者通过发表带有恶意跨域脚本的帖子或文章,从而把恶意脚本存储在服务器中,每个访问该帖子或文章的人都会触发该恶意脚本执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie。

2.1.2 反射型XSS

非持久性:攻击者事先制作好攻击链接,将攻击脚本嵌入到某个 URL 链接中,诱骗用户自己去点击链接,从而触发攻击代码执行,完成该次玫击。

2.1.3 DOM型XSS

DOM:Document Object Model,即文档对象模型,它是标识和处理一个HTML或XML文档的常用方法,是以面向对象方式描述的文档模型。

DOM型XSS:基于DOM文档对象模型的操作,通过前端脚本修改页面的DOM节点形成的xss,该操作不与服务器端进行交互,且代码是可见的,从前端获取到DOM中的数据在本地执行。只在客户端进行解析,不需要服务器的解析响应,是前端JavaScript自身安全漏洞

2.2 XSS攻击过程

2.2.1 存储型XSS攻击过程

2.2.2 反射型XSS攻击过程

2.2.3 反射型XSS跟存储型XSS的区别

  • 存储型XSS的恶意代码存在数据库里,反射型XSS的恶意代码存在URL里。
  • 反射型XSS漏洞常见于通过URL传递参数的功能,如网站搜索、跳转等。由于需要用户主动打开恶意的URL才能生效,攻击者往往会结合多种手段诱导用户点击。

2.2.4 DOM型XSS的攻击步骤

 

2.2.5 DOM型XSS跟前两种XSS的区别

DOM型XSS攻击中,取出和执行恶意代码由浏览器端完成,属于前端JavaScript自身的安全漏洞,而其他两种XSS都属于服务端的安全漏洞

2.2.6 三者区别

存储区插入点
存储型服务器数据库HTML
及射型URLHTML
DOM型前站存储前端JavaScript

2.3 XSS攻击实战

2.3.1 盗取Cookie:诱骗点击

  • 攻击者利用反射型XSS漏洞,获取受害者Cookie,从而可以实现无密码登陆。
  • Cookie:由服务器端生成,发送给User—Agent(一般是浏览器),浏览器一般会将 Cookie 的 key/value 保存到某个目录下的文本文件内,下次请求同一网站时就发送该 Cookie 给服务器(前提是浏览器设置为启用cookie)。
  • Cookie 名称和值可以由服务器端开发自已定义,对于JSP而言也可以直接写入 jsessionid,这样服务器可以知道该用户是否为合法用户以及是否需要重新登录等。
  • 攻击者一般是需要一个可以公网访问的服务器,用于接收获取的Cookie。也就是需要将获取的指定Cookie信息传递给站点以外的服务器,这个过程其实就是跨站。

2.3.2 利用存储型XSS攻击,跨站的到一个木马网站

可跨站标签

  • <lmg>标签 src 属性
  • <Script>标签 src 属性
  • <Link>标签 href 属性
  • Css 中<img>标签
  • Flash 中<img>标签

2.3.3 XSS入侵方式

① 用于测试是否存在跨站

<script>alert ("test")</script>

② 弹出一个包含浏览者cookie信息的对话框

<script>window. alert (document.cookie);</script>

③ 打开另一个网页窗口

<script>window.open( http://www.target.com/index.asp' , ' newwindow' ,' width=200, height=200');</script>

④ 出现一个高0,宽0的网页框架

<iframe src=http://www.target.com/ index.asp width=0 height=0> </iframe>

⑤ 刷新到另一个页面

<meta http-equiv="refresh" content="1; URL=http://www.t ar get.com/index. asp">

⑥ Scriptlet引入另一个页面

<object type="text/x-scriptlet" data="http://www.target.com/index.asp"></object>

2.4 XSS攻击防范

XSS攻击的两大要素是攻击者提交恶意代码和浏览器拉行恶意代码,针对这两点进行防范。

2.4.1 攻击者提交恶意代码

防护的重点是针对用户数据,总体思路是:在服务器端对用户提交的内容进行过滤,对URL的参数也进行过滤,屏蔽掉可以造成XSS攻击的内容。

输入过滤:

  • Str_replace() 替换函数
  • Preg_replace() 执行正则表达式的搜索和替换
  • Strtolower() 转化为小写字符
  • Trim() 消除空格
  • Stripslashes() 消除反斜杠

2.4.2 浏览器拉行恶意代码

对HTML做充分转义:通常只有一个规则,就是把 & < > "  ' / 这几个字符转义掉,确实能起到一定的 XSS防护作用,如 htmlspecialchars() 可将"<”和">”转换为HTML实体。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV(图像处理)-基于Python-形态学处理-开运算、闭运算、顶帽、黑帽运算

1. 形态学2. 常用接口2.1 cvtColor()2.2 图像二值化threshod()自适应阈值二值化adaptiveThreshod() 2.3 腐蚀与膨胀erode()getStructuringElement()dilate() 2.4开、闭、梯度、顶帽、黑帽运算morphologyEx() 1. 形态学 OpenCV形态学是一种基于OpenCV库的数字图像处理技术&…

React学习笔记(二)组件详解(上)

一、组件的概念&#xff1a; 当你开始学习 React 的时候&#xff0c;你会了解到 React 组件是 React 应用程序的基本构建块。组件是一个隔离的、可重复使用的代码块&#xff0c;由 HTML 元素、其他组件或自定义的 UI 元素组成&#xff0c;组件也就是react的核心思想&#xff0c…

python Flask web项目uwsgi + nginx部署

1.安装python 略 2.虚拟环境 2.1安装vertualenv pip3 install virtualenv2.2创建虚拟环境 创建保存环境的目录&#xff1a; mkdir venvs创建虚拟环境&#xff1a; [rootroot /]# virtualenv /home/xxx/venvs/flask2 --pythonpython3查看虚拟环境&#xff1a; [rootroot…

破万亿!英伟达的市值

文章目录 破万亿 &#x1f928; 英伟达的市值&#x1f928; 英伟达市值几近破万亿&#x1f916; ChatGPT 伪造 6 个法律案例&#x1f5e1;️ AI 巨头的呼吁&#xff0c;是真担心还是想垄断&#xff1f;&#x1f3e0; 硅谷诈骗犯开启女性监狱新家&#x1f4c8; 美国房价春季反弹…

有趣的图(五)(59)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日主题 咱们今天继续学习图的应用&#xff0c;这些算法都是实际问题抽象出来的。 举个例子吧&#xff01; 下面6个城市&a…

第八章ThreadLocal

文章目录 先看面试题什么是ThreadLocal能干嘛基本使用常用方法 使用ThreadLocal来解决使用sychronized解决ThreadLocal与synchronized的区别 强化理解数据隔离的意义为什么线程执行完要remove 运用场景_事务案例场景构建 引入事务JDBC中关于事务的操作的api常规解决方案常规方案…

javascript程序员简历模板(合集)

javascript程序员简历模板一 个人资料 姓 名&#xff1a; 性 别&#xff1a; 女 年 龄&#xff1a; 21 民 族&#xff1a; 汉族 户籍&#xff1a; 湖北 襄樊 最高学历&#xff1a; 本 科 现所在地&#xff1a; 广东 广州 毕业院校&#xff1a; 南京理工大学 所学专业&#xff1…

忘记 localStorage 吧,indexedDB 才是前端存储新宠!

前言 在项目开发过程中&#xff0c;前端需要存储大量的数据。cookie, localstorage 都有存储长度限制。表格一览 特性cookielocalStoragesessionStorageindexedDB数据生命周期一般由服务器生成&#xff0c;可以设置过期时间&#xff1b;前端采用和js-cookie等组件也可以生成除…

带货、文案策划看过来-让GPT30秒内帮你写出世界顶级文案

开篇 在这个充满竞争的市场环境中,一句响亮的品牌短语,往往能让消费者对你的品牌印象深入脑海。俗话说:“言短意赅,反而显得深邃。”这不正是品牌短语的形式特点吗?而这种言简意赅、朗朗上口的品牌短语,在中国市场上就显得尤为重要。因为它直击心灵,与消费者之间一夕之…

Fiddler 八个实用技巧

大家对Fiddler应该不会陌生&#xff0c;但里面有些技巧不见得都会&#xff0c;这里就有八个实用技巧&#xff0c;通过对Fiddler的定制&#xff0c;能提高大家的测试效率。 1、双击Session时&#xff0c;使响应页始终显示到”json”tab页&#xff1b;使请求页始终显示到“webfo…

【LLM GPT】李宏毅大型语言模型课程

目录 1 概述1.1 发展历程1.2 预训练监督学习预训练的好处 1.3 增强式学习1.4 对训练数据的记忆1.5 更新参数1.6 AI内容检测1.7 保护隐私1.8 gpt和bert穷人怎么用gpt 2 生成式模型2.1 生成方式2.1.1 各个击破 Autoregressive2.1.2 一次到位 Non-autoregressive2.1.3 两者结合 2.…

js包管理yarn与npm,yarn安装,yarn 不是内部或外部命令

目录 yarn与npm 优势 用法区别 安装yarn 报错 yarn 不是内部或外部命令 运行代码&#xff08;yarn dev&#xff09; yarn与npm yarn由Facebook为解决npm的一些问题而创建的 优势 快速 本地缓存并行下载 - Yarn并行下载&#xff0c;还可以直接从硬盘缓存中读取包&…

python3 爬虫相关学习8:python 的常见报错内容汇总(持续收集ing)

目录 1 低级错误&#xff08;比如拼写错误等&#xff09; 1.1 NameError: 1.2 属性错误 AttributeError: 属性拼写错误 2 应用错误&#xff08;类型应用&#xff0c;属性使用的错误&#xff09; 2.1 类型错误 TypeError: 如字符串连接错误 2.2 属性应用错误 Attribu…

【枚举区间思想+DP】子串的子序列

F-子串的子序列_牛客小白月赛62 (nowcoder.com) 题意&#xff1a; 思路&#xff1a; 复盘一下应该有的思路&#xff1a; 首先n^2枚举肯定超时&#xff0c;我们枚举的是一个区间 枚举区间有一些trick&#xff1a; 1.枚举其中一个右&#xff08;左&#xff09;端点&#xff…

基于simulink车辆动力学可视化仿真(附源码)

一、前言 车辆动力学是研究汽车在行驶过程中的运动学和力学特性的学科。它研究车辆在不同路面条件、不同驾驶情况下的加速、制动、转向等运动状态&#xff0c;并通过建立数学模型来分析和优化车辆的性能和安全性。车辆动力学是汽车工程、机械工程和物理学等学科的交叉领域&…

【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)

1.什么是文件 磁盘上的文件是文件。 但是在程序设计中&#xff0c;我们一般谈的文件有两种&#xff1a;程序文件、数据文件&#xff08;从文件功能的角度来分类的&#xff09;。 程序文件 包括源程序文件&#xff08;后缀为.c&#xff09;,目标文件&#xff08;windows环境后…

unittest教程__expectedFailure预期用例失败(5)

在断言用例执行结果时&#xff0c;会出现预期结果与实际结果不一致的情况&#xff0c;此时我们明确知道用例执行结果为FAIL&#xff0c;不想看到打印错误信息怎么办&#xff1f; 使用装饰器unittest.expectedFailure标记该用例。 import unittestclass Demo(unittest.TestCas…

Tcl常用命令备忘录-format与scan

format 语法&#xff1a;format formatString arg arg ... 参数介绍&#xff1a; formatString&#xff1a;格式化字符串&#xff0c;使用各种标识符和修饰符进行格式化。arg&#xff1a;被格式化的变量或字符串。 Tcl语言中的format命令可以用来格式化字符串输出&#xff…

Autosar代码解析-Source Insight的使用

文章目录 一、Source Insight简介二、Autosar代码查看三、解决办法一、Source Insight简介 Source insight是一款简洁、强大的轻量级代码浏览编辑器,启动快、使用便捷,很多程序员应该都使用过!它几乎支持所有的语言,比如C、C++、ASMA汇编、HTML等,能创建并维护其高性能的符…

【软件测试】性能测试服务端—排查指标问题(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件性能测试的目…