xss总结记录

认识XSS

最近工作小组上,集中精力提高安全意识。而XSS作为全端安全中最常见的问题之一,我们也做了着重的学习。 XSS全称跨站脚本(Cross Site Scripting)攻击,看起来缩写应该是CSS,但是CSS已经普遍指层叠样式表(Cascading Style Sheets),所以呼作XSS

跨站脚本攻击是一种常见的WEB安全漏洞,它指攻击者可以在页面中注入恶意脚本,可被浏览器解析执行,当受害者打开被攻击的页面时,达到窃取用户信息、传播、钓鱼等的效果。

XSS的生成

XSS的生成,通常依赖于一个注入点,指的是攻击者可控内容的提交位置。 日常最常接触到的就是输入框了,任何人都可以在输入框中输入任意内容,然后提交。

但是,还有很多我们平常没有留意到,可能会被使用的注入点:

1、GET 请求参数
2、POST请求参数
3、UA
4、Referer
5、URI
...

一切可以提交数据到页面的点都称作向量

XSS漏洞的产生,都是基于对非预期输入的信任。 开发者对用户输入的数据保持了信任态度,无条件或者预防不足地显示了用户输入的内容,就有可能发生安全问题。

XSS分类

最常见的XSS分类

  • 反射型
  • 存储型
  • DOM型

反射型

反射型XSS也叫非持久型XSS,最常见在搜索框中(或者是构造在网站的某个GET参数的值中)。 比如:

http://example.xss.com/search.php?word="><script>alert(1)</script>

如果模拟一个搜索页,假设搜索页如下构造

/**
 * 很多搜索页会在搜索框显示搜索值
 */
  <input type="search" value="<?php echo $_GET['word'] ?>"/>

对于上面的网址,就会输出html如下

<input type="search" value=""><script>alert(1)</script>"/>

一句script就生成了。 这就是反射型XSS,通过提交内容,但是不经过数据库存储,直接反射显示在页面上。

存储型

存储型XSS也叫持久型XSS,意思是输入值会经过存储,以后每次访问该页面(或者是使用到该输入的某些页面),都会触发XSS。 比较常见的就是论坛回复、发帖

  1. 输入内容 -> 存入数据库
  2. 任意用户访问 -> 从数据库取出
  3. 发生攻击

DOM型

其实DOM型也属于反射型的一种,不过比较特殊,所以一般也当做一种单独类型。 如我上图的那个动图,就是DOM型。 即不经过后端渲染,直接由js操作引发的XSS

其他类型的XSS

以下XSS涉及内容比较大,需要针对特定环境,没有经过系统学习。

  • mXSS 突变型XSS
  • UXSS 通用型XSS
  • Flash XSS
  • UTF-7 XSS
  • MHTML XSS
  • CSS XSS
  • VBScript XSS

XSS防御

一般来说,XSS防御就是不信任任何用户数据的数据。 《给开发者的终极XSS防御备忘录》

下面是提供一个XSS游戏

最后,非常感谢我厂youzuzhang的文章,带我生动认识了XSS,本文基本沿袭其思路。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zhangdd.com

linux服务器性能检测工具nmon使用

今天介绍一款linux系统服务器性能检测的工具-nmon及nmon_analyser (生成性能报告的免费工具),亲测可用。 一.介绍 nmon 工具可以帮...

35730
来自专栏Python小屋

Python使用标准库urllib模拟浏览器爬取网页内容

爬取网页内容的第一步是分析目标网站源代码结构,确定自己要爬取的内容在哪里,这要求对HTML代码有一定了解,对于某些网站内容的爬取还需要具有一定的Javascri...

12010
来自专栏二进制文集

Netty 之 Java 的 I/O 演进之路

系列文章:http://www.jianshu.com/p/594441fb9c9e

12130
来自专栏有刻

Nginx 原理解析和配置摘要

43490
来自专栏FreeBuf

Linux内核中的递归漏洞利用

6月1号,我提交了一个linux内核中的任意递归漏洞。如果安装Ubuntu系统时选择了home目录加密的话,该漏洞即可由本地用户触发。如果想了解漏洞利用代码和短...

31560
来自专栏我的小碗汤

nginx学习之模块

这里注意了,虽然修改的是default.conf,但是检查的时候始终还是加载nginx.conf,否则报错:

8420
来自专栏MoeLove

[译]Tornado4.3-用户指南

Tornado 4.3于2015年11月6日发布,该版本正式支持Python3.5的async/await关键字,并且用旧版本CPython编译Tornado同...

11840
来自专栏我有一个梦想

Python 项目实践三(Web应用程序)第一篇

一 Djangao入门 当今的网站实际上都是富应用程序(rich application),就像成熟的桌面应用程序一样。Python提供了一组开发Web应用程序...

38960
来自专栏精讲JAVA

Java新一代网络编程模型AIO原理及Linux系统AIO介绍

从JDK 7版本开始,Java新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了),包含了众多性能和功能上的改进...

28580
来自专栏小白安全

安全扫描器Nmap渗透使用教程

介绍 nmap是用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图Nmap的发送特制的数据包到目标主机然后对返回数据包进行分析。Nm...

48740

扫码关注云+社区

领取腾讯云代金券