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

yizhihongxing

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日

相关文章

  • css简介_动力节点Java学院整理

    CSS简介 什么是CSS CSS(Cascading Style Sheets)即层叠样式表,是一种用于网页样式设计的语言。它通过描述HTML或者XML文档的外观来分离文档的内容和样式。CSS 使得你可以将文档结构和文档样式分开,从而更好地控制文档的渲染方式。 CSS的作用 CSS 能够实现动态样式设定,主要作用包括以下几点: 样式控制:CSS能够实现对网页…

    css 2023年6月9日
    00
  • 通过position定位实现div底端对齐

    想要通过position定位实现div底端对齐,需要以下步骤: 给父元素设置 position: relative; 这一步是为了使子元素能够参照自己正确的定位。 给子元素设置 position: absolute; bottom: 0; 这一步是为了让子元素的底部与父元素的底部对齐,并且 bottom 属性的值为 0 表示将子元素定位在父元素底部。 下面是…

    css 2023年6月10日
    00
  • 详解CSS边距重叠与解决方案探究

    详解CSS边距重叠与解决方案探究 什么是CSS边距重叠 边距重叠是指当两个或更多的盒子(可能是兄弟姐妹,也可能是父子元素)共享同一个父元素并在垂直方向上彼此接触时,它们在垂直方向上的外边距会重叠,导致实际的边距不同于我们期望的值。在一些情况下,边距重叠可能会对布局造成不良影响。 哪些情况会导致CSS边距重叠 以下是导致边距重叠的常见情况: 相邻的兄弟/姐妹元…

    css 2023年6月9日
    00
  • SpringBoot无法访问/static下静态资源的解决

    当使用SpringBoot开发web应用时,我们可以把静态资源文件放在项目中的“/static”或“/public”或“/resources”或“/META-INF/resources”目录下,在应用运行时就可以通过相应的URL来访问静态资源。然而,有时候我们会遇到这样的问题:通过URL访问静态资源时,却发现无法获取到资源,出现404错误,这通常是因为Spr…

    css 2023年6月10日
    00
  • html页面中常用的一些小方法整理

    在 HTML 页面中,有许多常用的小方法可以提高页面的可读性和可维护性。下面整理了一些常用的小方法,包括示例说明和代码实现。 方法一:使用 meta 标签设置页面编码 可以使用 meta 标签来设置页面的编码,以便浏览器正确地解析页面内容。具体方法是在 head 标签中添加如下代码: <meta charset="UTF-8"&gt…

    css 2023年5月18日
    00
  • 如何用css代码实现有立体效果的表格

    实现有立体效果的表格可以为网页增加美观性和交互性。下面是一个完整攻略,包含了如何使用 CSS 实现有立体效果的表格的过程和两个示例说明。 CSS 实现有立体效果的表格的过程 1. 使用 box-shadow 属性 我们可以使用 CSS 的 box-shadow 属性来实现有立体效果的表格。下面是一个示例: <table> <tr> &…

    css 2023年5月18日
    00
  • 使用css sprites来优化你的网站在Retina屏幕下显示实现原理与代码

    使用 CSS Sprites 是一种优化网页性能和加快图片加载速度的高效方法。针对 Retina 屏幕,可以使用多倍图来显示更加清晰的图片,但同时也会增加页面的加载时间,因此使用 CSS Sprites 可以解决这个问题。 CSS Sprites 基本原理 CSS Sprites(CSS 雪碧图)指的是将多个小图片合并成一个大的图片,并用 CSS 技术实现将…

    css 2023年6月10日
    00
  • js编写一个简单的产品放大效果代码

    让我们来详细讲解如何编写一个简单的产品放大效果代码。 1. 准备工作 在编写代码前,需要先准备好以下两项: 目标元素的图片。 一个容器元素,用来包裹目标元素。 2. 容器与目标元素的搭建 首先,我们需要使用HTML和CSS来搭建容器元素和目标元素。代码如下: <div class="container"> <img sr…

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