目录
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. Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法

    Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx" ...

  2. Spring Boot 分布式Session状态保存Redis

    在使用spring boot做负载均衡的时候,多个app之间的session要保持一致,这样负载到不同的app时候,在一个app登录之后,而打到另外一台服务器的时候,session丢失. 常规的解决方 ...

  3. 14.18 InnoDB Backup and Recovery 备份和恢复:

    14.18 InnoDB Backup and Recovery 备份和恢复: 安全数据库管理的关键是 做定期的备份,依赖你的数据卷, MySQL server的数量和数据库的负载,你可以使用那些技术 ...

  4. MSSQL- select @@identity的用法

    转载自:http://blog.163.com/zhangqian_sms/blog/static/544483382008925112539620/ 用select @@identity得到上一次插 ...

  5. HTML5,微信开发原码社区

    HTML5开发助手,快速查看HTML及javascript接口文档 http://www.9miao.com/thread-60966-1-1.html 简洁的手机wap公司产品展示网站模板下载htm ...

  6. cpp check 分析

    1 FileTabCharacterCheck 为什么检查: 因为对于一个TAB而言,所空的空格不定是固定的,如果在机器A上设置了是4个空格,显示正常,而在机器B上阅读,B机器是100个空格为一个TA ...

  7. 一起来开发Android的天气软件(三)——使用Volley实现网络通信

    距离上一篇一起来开发Android天气软件二的时间又将近半个月了,之间一直由于有事而没有更新实在抱歉,近期会加快更新的步伐.争取在2015年到来前写完这系列的博文,上一章我们已经使用LitePal框架 ...

  8. hdu1695(莫比乌斯)或欧拉函数+容斥

    题意:求1-b和1-d之内各选一个数组成数对.问最大公约数为k的数对有多少个,数对是有序的.(b,d,k<=100000) 解法1: 这个能够简化成1-b/k 和1-d/k 的互质有序数对的个数 ...

  9. Android使用ksoap2-android调用WebService学习

    之前主要做客户端UI交互,很少处理数据和接触服务端,但现在的移动设备根本不可能离得开网络连接,数据的交换.最近学习的是在android端如何去调用远程WebService,都说WebService是一 ...

  10. windows线程同步的总结

    一 线程 1)如果你正在编写C/C++代码,决不应该调用CreateThread.相反,应该使用VisualC++运行期库函数_beginthreadex,退出也应该使用_endthreadex.如果 ...