目录
1 XSS跨站攻击简介 1
1.1 什么是XSS 1
1.2 XSS的分类 1
1.3 XSS的危害 1
2 XSS的攻击原理 1
2.1 本地式漏洞攻击 1
2.2 存储式漏洞攻击 2
2.3 反射式漏洞攻击 2
3 XSS的防御策略 3
3.1 过滤特殊字符或敏感字段 3
3.2 对敏感数据进行加密  4
1 XSS跨站攻击简介
1.1 什么是XSS
XSS又叫CSS (Cross Site Script)
,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意脚本代码,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户
的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。

1.2 XSS的分类
一类是来自内部的攻击,主要指的是利用网页自身的漏洞,将恶意脚本注入到网页,当用户访问此页面时,恶意脚本也会跟着执行,这样恶意脚本就能利用到用户的所有状态数据执行恶意操作,比如发微博、私信等(新浪微博的XSS攻击就是此类)。

另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,攻击网站漏洞。

1.3 XSS的危害
• 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
• 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
• 盗取企业重要的具有商业价值的资料
• 非法转账电子邮件
• 强制发送网站挂马
• 控制受害者机器向其它网站发起攻击
2 XSS的攻击原理
XSS攻击原理是利用web应用的漏洞进行攻击的。这些漏洞攻击可归类为三种:本地式漏洞攻击,存储式漏洞攻击,反射式漏洞攻击。
2.1 本地式漏洞攻击
这种漏洞存在于页面中客户端脚本自身。
攻击工程:
A(攻击者)给B(被攻击者)发送一个恶意构造了Web的URL。
B点击并查看了这个URL。
恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在B电脑上。
具有漏洞的HTML页面包含了在B电脑本地域执行的JavaScript。
A的恶意脚本可以在B的电脑上执行B所持有的权限下的命令。
2.2 存储式漏洞攻击
该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。

攻击过程:
C拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。
A注意到C的站点具有存储式漏洞。
A发布一个热点信息,吸引其它用户纷纷阅读,该热点信息中潜藏着一段XSS攻击代码。
C或者是任何的其他人B浏览该信息,其会话cookies或者其它信息将被A盗走或攻击。
2.3 反射式漏洞攻击
类似存储式漏洞,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能注入到动态页面中。

攻击过程:
B经常浏览某个网站C。B使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)在网站A中。
A发现C站点包含反射性的XSS漏洞,编写一利用漏洞的URL,并将其冒充为来自C的邮件给B。
B在登录到C的站点后,浏览A供的URL。
嵌入到URL中的恶意脚本在B的浏览器中执行,然后在B完全不知情的情况下将这些信息发送到A的Web站点。
3 XSS的防御策略
3.1 过滤特殊字符或敏感字段
XSS攻击也是利用了Web页面的编写疏忽,所以有一种方法就是从Web应用开发的角度来避免。
(1) 对输入数据进行验证与过滤:
用户在界面输入数据时,可以通过js对提交数据进行验证和过滤,但这层验证防御很弱,很容易让攻击者攻破。除了在界面前端验证过滤外,我们还可以通过后台
对页面提交过滤的数据进行验证和过滤。严格的验证可以让web应用将可攻击漏洞降到最小,同时也可以保证信息的安全性和系统正确性。

如:可以对用户输入<script>,<img>,<iframe>,http,src等敏感信息进行过滤。可以对数据格式进行验证,比如邮箱输入,必须满足一定的邮箱格式。

(2) 对输出数据进行过滤:
Web应用在将数据展现给用户的时候,特别是那些由用户输入的数据在输出时必须进行过滤后在展现给用户界面。
如:在jsp页面动态展现后台数据输出信息是,可以使用:
<c:out value=”${xxx}”/>
输出数据信息,这样out标签会对数据进行相应的过滤处理,即使数据中包含有攻击性脚本代码,也会过滤为文本的形式展现出来。
3.2 对敏感数据进行加密
这里所说的敏感数据,就是关系到系统安全的数据,系统中重中之重的数据。
Web应用中往往最敏感的数据信息就是用户信息(用户名,密码),对这些敏感信息的使用和存储都要谨慎小心,因为web应用系统的根本就是用户,一旦用户信息被攻击,可以想象整个web系统会遭受怎样的攻击和破坏。

(1) web系统中对敏感数据加密存储:
在web系统中对敏感数据的存储就两种:一种是后台存储,如数据库存储。一种是前端存储,如cookie存储。一种内存存储,如session。不管是那种存储都必须对安全数据进行加密存储。

如数据库存储用户密码必须使用加密存储,最好是使用不可破解不可逆的算法加密,如md5(当然MD5也可以通过穷举法来破解,我们可以在md5基础上加上特别的算法来加密);

如cookie存储,如果用cookie来存储敏感信息,最好是不要存储实质性的敏感信息,而存储一个加密的token信息,根据前端页面传过来的token信息在后台代码中匹配验证或获取相对应的信息。

参见:cookie使用安全 http://xmong.iteye.com/blog/1566102
如session存储,对于这种内存中存储的信息,要遵循,作用域最小化,能清则清。用户信息如果能在request中使用的,就最好不要再
session中使用。一是信息常驻内存,二存储作用域扩大不够安全。session中存储用户信息最好不要连带用户特敏感信息,如用户密码,能清则清。

(2) web系统中要安全使用敏感数据:
web系统中要安全使用敏感数据,对这些数据的使用访问要有相应的权限控制和验证,同时通信的过程中也要注意通信安全,如加密,采用SSL通道等

XSS跨站攻击的更多相关文章

  1. 云锁Linux服务器安全软件安装及防护webshell、CC、XSS跨站攻击设置

    无论我们在使用电脑,还是使用VPS/服务器的时候,最为担心的就是服务器是否有安全问题,尤其是网站服务器再遭受攻击的时候如何得到防护.对于大 部分站长用户来说,我们可能只会使用基础的环境,如果真遇到问题 ...

  2. Laravel5中防止XSS跨站攻击的方法

    本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HT ...

  3. 用shell脚本批量进行xss跨站攻击请求

    由于执行的xss攻击请求他多了,初步估计要执行83次,而且还要执行3篇,如果手工一个一个去执行,说出去,我还配叫自动化大师吗: 有鉴于此,边打算自己编写一个脚本进行批量执行: 而短脚本的编写,非she ...

  4. Cross-Site Scripting XSS 跨站攻击全攻略 分类: 系统架构 2015-07-08 12:25 21人阅读 评论(2) 收藏

    原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/ 题记:这是我在<黑客X档案>08年第5期发表的一篇文章, ...

  5. 应用安全-Web安全-XSS(跨站攻击)攻防整理

    分类 反射型 存储型 DOM型 XSF(Flash XSS) PDFXSS MHTML协议跨站(MHTML,data) 字符编码(UTF-7 XSS) 富文本编辑器测试 - 输入框 <img S ...

  6. web安全性测试——XSS跨站攻击

    1.跨站攻击含义 XSS:(Cross-site scripting)全称"跨站脚本",是注入攻击的一种.其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布 ...

  7. 宽字节XSS跨站攻击

    简介 宽字节跨站漏洞多发生在GB系统编码. 对于GBK编码,字符是由两个字节构成,在%df遇到%5c时,由于%df的ascii大于128,所以会自动拼接%5c,吃掉反斜线.而%27 %20小于asci ...

  8. XSS跨站攻击靶场-通关笔记

    XSS攻击是Web攻击中最常见的攻击手法之一,XSS中文名跨站脚本攻击,该攻击是指攻击者在网页中嵌入恶意的客户端脚本,通常是使用JS编写的恶意代码,当正常用户访问被嵌入代码的页面时,恶意代码将会在用户 ...

  9. xss跨站攻击原理

    https://www.cnblogs.com/frankltf/p/8975010.html 跨站脚本攻击:通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,一旦攻击成功,它可以获取用户 ...

随机推荐

  1. [cocos2d-x]HelloWorldDemo

    实现一个demo,具备以下功能: 1.让几个字分别位于中间和四个角落. 2.中间的字体改变,并且带有闪烁功能. 3.单点触摸和多点触摸,并且能够实现滑动效果,滑动的话必须使用带有bool返回值的单点触 ...

  2. perl post发送json数据

    sub  wx_init {                #$login_url ="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=- ...

  3. FindLetter 类——查找文件中特定的字符,每一行开头为某一个字符,则跳过

    /*统计除了>之外的行里面CHED四个字母总数*/ #include<fstream> #include<iostream> #include<cstring> ...

  4. 在JDBC中使用PreparedStatement代替Statement,同时预防SQL注入

    本篇讲诉为何在JDBC操作数据库的过程中,要使用PreparedStatement对象来代替Statement对象. 在前面的JDBC学习中,对于Statement对象,我们已经知道是封装SQL语句并 ...

  5. vim 操作指令2

    VIM命令大全 光标控制命令 命令 光标移动 h 向左移一个字符 j 向下移一行 k 向上移一行 l 向右移一个字符 G 移到文件的最后一行 w 移到下一个字的开头 W 移到下一个字的开头,忽略标点符 ...

  6. PrimusUI

    小身材大用途,用PrimusUI驾驭你的页面 “PrimusUI”是自己在借鉴了如今网上很多开源的UI库,再经过自己整理加工的一个简单代码集合. 每个功能块的CSS代码都很少,力求简单易懂,低门槛,代 ...

  7. C#分析URL参数获取参数和值得对应列表

    原文: C#分析URL参数获取参数和值得对应列表 /// <summary> /// 分析url链接,返回参数集合 /// </summary> /// <param n ...

  8. 中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  9. 设计模式(三)-- 适配器模式(Adapter)

    适配器模式(Adapter) 考虑一个记录日志的应用,由于用户对日志记录的要求很高,使得开发人员不能简单地采用一些已有的日志工具或日志框架来满足用户的要求,而需要按照用户的要求重新开发新的日志管理系统 ...

  10. Oracle 12C 简介

    2013年6月26日,Oracle Database 12c版本正式发布,首先发布的版本号是12.1.0.1.0,率先提供下载的平台有Linux和Solaris: Oracle官方下载地址: http ...