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日

相关文章

  • js+css在交互上的应用

    我会尽力详细讲解“js+css在交互上的应用”的完整攻略。在本次讲解中,我将着重介绍如何使用js和css实现网站的交互特效。下面是详细的步骤和示例操作。 1. 使用CSS实现动态效果 CSS可以帮助我们实现很多简单的动态效果,例如:鼠标移动到元素上时改变元素的颜色或大小,展示隐藏的元素等。 1.1 鼠标移动到元素上改变元素的颜色 要实现这一效果,我们可以使用…

    css 2023年6月10日
    00
  • css hack之清除浮动(clearfix)

    清除浮动(clearfix)是CSS hack技术中的一种,它主要用于清除父级容器元素中子级浮动元素带来的影响,以避免出现莫名其妙的问题。下面是完整的清除浮动攻略。 什么是清除浮动(clearfix)? 清除浮动是在一个容器里包含了浮动元素后,为了让父级元素能够自适应子元素高度而产生的一种CSS hack技术。在不清除浮动的情况下,容器无法识别浮动元素的高度…

    css 2023年6月10日
    00
  • offsetTop用法详解

    对于“offsetTop用法详解”的完整攻略,我会从以下几个方面进行详细讲解: offsetTop是什么 offsetTop的用途 如何使用offsetTop 示例说明 注意事项 1. offsetTop是什么 offsetTop是一个只读属性,返回当前元素的offsetParent元素到当前元素顶部的距离。在CSS中,元素的top值被定义为其最近的已定位祖…

    css 2023年6月10日
    00
  • 详解使用HTML5的classList属性操作CSS类

    下面是使用HTML5的classList属性操作CSS类的完整攻略。 什么是classList属性 classList属性是HTML5中新增加的操作CSS类的属性。它可以让我们方便地对元素的class属性进行增、删、改、查等操作。 使用classList属性的常用方法 add 方法:增加CSS类 element.classList.add(className…

    css 2023年6月9日
    00
  • vue 鼠标移入移出(hover)切换显示图片问题

    对于vue鼠标移入移出(hover)切换显示图片问题,我们可以通过以下步骤进行实现: 步骤1:创建Vue组件 我们需要创建一个Vue组件来实现该功能。首先,在HTML中定义一个div,并为其添加v-on:mouseenter和v-on:mouseleave事件。然后,给该div添加v-bind样式绑定和v-bind:image_src属性绑定。这里我们需要注…

    css 2023年6月10日
    00
  • CSS布局最常见的八条错误小结

    当我们进行网页布局时,经常会出现布局排版不协调的情况。以下是CSS布局最常见的八条错误小结及其解决方法: 1. 错误的盒子模型 盒子模型指元素的所有内容都在一个盒子里面,包括边框、内边距、外边距、宽度、高度等属性。在CSS中,有两种盒子模型:标准盒子模型和IE盒子模型。 解决方法:选择标准盒子模型,即使用box-sizing: border-box;属性将所…

    css 2023年6月9日
    00
  • vue-cli2打包前和打包后的css前缀不一致的问题解决

    在使用vue-cli2打包项目的过程中,出现样式前缀不一致的问题,这是因为在开发过程中我们使用的vue-cli2自带的webpack配置,与我们在实际部署上线时使用的配置存在差异。 解决方法是在webpack配置文件中添加自动添加样式前缀的插件autoprefixer,这个插件可以根据配置项自动为 css 属性添加拥有性前缀,从而使得样式在不同浏览器上兼容性…

    css 2023年6月9日
    00
  • 纯js实现遮罩层效果原理分析

    首先,什么是遮罩层效果呢?顾名思义,就是用来遮住某一区域的一层蒙版,可以用于模态框、提示框等场景。那我们该如何用纯js来实现遮罩层效果呢? 一、HTML结构 我们需要在HTML中定义遮罩层的结构,可以使用一个具有绝对定位的div元素来充当遮罩层,代码如下: <body> <div id="mask"></di…

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