XSS绕过技术 XSS插入绕过一些方式总结

XSS(Cross-Site Scripting,跨站脚本攻击)是指恶意攻击者在目标网站注入恶意脚本,使得用户在访问该网站时被攻击者控制。XSS攻击是目前最常见的Web安全问题之一,攻击者通过XSS攻击可以窃取用户的敏感信息,如账号密码、Cookie等,或者利用XSS攻击进行其它恶意行为。为了防止XSS攻击,web开发中应该采用严格的输入过滤和输出转义等措施。

然而,不少网站对XSS攻击的防护不够严密,XSS攻击仍屡屡得手。其中,XSS绕过技术是攻击者经常使用的手段之一。本篇文章将为大家总结几种XSS绕过技术及相应的防御措施。

一、XSS绕过技术总结
1.各种编码绕过
2.标签间的空格、回车、缩进漏洞绕过
3.各种事件绑定
4.伪协议绕过
5.各种浏览器兼容性
6.文件上传

二、示例说明
1. 编码绕过示例
常见的编码绕过包括HTML实体编码、URL编码、JavaScript编码等。攻击者可以利用编码绕过绕过网站输入过滤,成功注入恶意代码。以下将以HTML实体编码绕过为例。

原始代码:

<input type="text" name="search" value="<?php echo trim(htmlspecialchars($_GET['search'])); ?>" />

攻击者在搜索框中输入<img src=x onerror=alert('XSS')>,得到的HTML源码如下:

<input type="text" name="search" value="&lt;img src=x onerror=alert('XSS')&gt;" />

该网站使用了HTML实体编码将<符号编码为&lt;,将>符号编码为&gt;。然而,攻击者可以通过使用十进制或十六进制的ASCII码,绕过HTML实体编码。比如,下面的代码将会直接在网站页面弹出恶意代码的弹框:

"><svg/onload=alert(1)>//

最终得到的HTML源码如下:

<input type="text" name="search" value="" /><svg/onload=alert(1)>//""&gt;

为了防止编码绕过,网站应当使用安全的输出转义方法,如htmlspecialchars等。

2.标签间空格绕过示例
在HTML标签里面增加空格并不会改变其语法意义,因此攻击者可以通过标签间空格绕过网站输入过滤,注入恶意代码。以下将以标签间空格绕过为例。

原始代码:

<div id="xss"><?php echo trim($_GET['content']); ?></div>

攻击者在请求中输入以下代码:

<scr ipt>alert(1)</scr ipt>

得到的HTML源码如下:

<div id="xss"><scr ipt>alert(1)</scr ipt></div>

该网站没有对用户输入内容进行过滤,将用户的输入作为HTML代码输出。然而,攻击者在输入<scr ipt>时,利用了标签间空格绕过的漏洞。也就是说,攻击者在输入时,将<script>标签用空格分隔成两个标签:<script>。由于浏览器对标签间的空格处理不一致,有的会自动忽略,有的则会将空格放入标签内部。因此,攻击者成功地绕过了输入过滤,注入了恶意代码。

为了防止标签间空格绕过漏洞,网站应当在输入过滤时,使用严格的正则表达式匹配过滤,不允许任何标签间带有空格。同时,也应该采用严格的输出转义方式,如htmlspecialchars等。

三、总结
通过对XSS绕过技术的分析,我们可以得出以下防御措施:
(1)输入过滤:在前端、后台和数据库都进行输入过滤,严格限制用户的输入;
(2)输出转义:对于所有从用户端输入的内容,采用严格的输出转义方式,如htmlspecialchars等,以避免输出时被解析为HTML代码;
(3)HTTPS、HTTPOnly、Secure等安全策略:使用HTTPS协议,设置HTTPOnly、Secure等安全策略,避免Cookie泄漏,进一步增强网站的安全性。

希望通过本篇文章的阅读,大家对XSS攻击和防御有了更深入的理解,同时也能在实际开发中采用有效的防御措施,提高网站的安全性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:XSS绕过技术 XSS插入绕过一些方式总结 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • vue自适应布局postcss-px2rem详解

    首先我们需要了解一下什么是自适应布局和px2rem。 自适应布局 自适应布局是指网页能够根据屏幕尺寸自动调整布局,从而实现在不同的终端设备上呈现出更好的用户体验。在传统的网页设计中,设计师通常会设置一个固定的像素值作为布局单位,但是这种布局难以适应不同屏幕尺寸的设备。因此,采用自适应布局的设计方法可以有效解决这个问题。 px2rem px2rem是一种将像素…

    css 2023年6月11日
    00
  • 基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果

    接下来我将详细讲解几种基于jQuery实现菜单效果的攻略,包括手风琴菜单、层级菜单、置顶菜单和无缝滚动效果。 手风琴菜单 手风琴菜单是一种常用的网站导航菜单,它的特点是只展开一个菜单,其他菜单在收起的状态。下面是一条jQuery代码实现手风琴菜单的示例: $(‘.accordion-header’).click(function () { $(this).t…

    css 2023年6月11日
    00
  • JS抛物线动画实例制作

    下面是详细讲解“JS抛物线动画实例制作”的完整攻略。 1. 前置技能 在制作JS抛物线动画之前,需要掌握以下前置技能: HTML和CSS的基本语法和用法 JavaScript基本语法和DOM操作等知识 数学知识(具体在抛物线公式部分会提到) 2. 准备工作 在开始制作抛物线动画之前,需要先准备好以下工作: 编写HTML文件,并创建一个包含按钮的div元素和一…

    css 2023年6月10日
    00
  • vue中使用hover选择器无效的问题

    关于“vue中使用hover选择器无效的问题”,我向您提供以下攻略: 问题解析 在Vue项目的开发过程中,有时会出现使用CSS的hover选择器无效的问题。这通常是由于Vue的特点所引起的。 Vue是一款渐进式JavaScript框架,它采用数据驱动的思想,将HTML、CSS、JS分离,因此在Vue组件中,CSS作用域默认是局部的,也就是说,所编写的CSS样…

    css 2023年6月9日
    00
  • css实现5种滚动吸顶实现方式的比较(性能升级版)

    对于CSS实现5种滚动吸顶实现方式的比较(性能升级版),我们可以按照以下攻略进行说明: 1. 引言 在网页的制作过程中,滚动吸顶效果被广泛使用。网页的顶部导航栏、链接栏、广告悬浮框等元素,在滚动到一定位置时,可以变成固定的吸顶效果。下面我们就来介绍一下,如何使用CSS实现5种滚动吸顶效果的不同实现方式,以及它们之间的性能比较。 2. 实现方式 基本实现方式如…

    css 2023年6月10日
    00
  • 学习JavaScript图片预加载模块

    下面是学习JavaScript图片预加载模块的完整攻略。 1. 什么是图片预加载 图片预加载是指在页面加载完成之前,提前加载需要用到的图片资源,以此提高页面的加载速度和用户的体验。 2. 实现图片预加载 在 JavaScript 中,我们可以使用 Image 对象实现图片预加载。以下是实现图片预加载的基本步骤: 创建一个 Image 对象,并设置它的 src…

    css 2023年6月10日
    00
  • css屏幕居中的方法(推荐)

    下面我给您详细讲解“CSS屏幕居中的方法(推荐)”的完整攻略。 方法1:使用 Flexbox实现居中 步骤1:设置父元素的display为flex,让子元素可以排列 .container{ display: flex; } 步骤2:使用justify-content和align-items设置子元素的居中方式 justify-content属性是用来设置主轴…

    css 2023年6月9日
    00
  • Bootstrap基本样式学习笔记之图片(6)

    Bootstrap基本样式学习笔记之图片(6)主要介绍的是Bootstrap框架中关于图片的样式和API。 Bootstrap图片样式 Bootstrap提供了一系列的图片样式供我们使用,这些样式都是通过为 <img> 标签或具有 class=”img-*” 属性的其他元素添加类来实现的。以下是常用的Bootstrap图片样式类: .img-fl…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部