XSS跨站攻击

目录
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通道等

***************************

时间: 2024-08-30 05:55:49

XSS跨站攻击的相关文章

Laravel 5 中防止 XSS 跨站攻击的例子

1.安装 HTMLPurifier 是基于 PHP 编写的富文本 HTML 过滤器,通常我们可以使用它来防止 XSS 跨站攻击,更多关于 HTMLPurifier的详情请参考其官网:http://htmlpurifier.org/.Purifier 是在 Laravel 5 中集成 HTMLPurifier 的扩展包,我们可以通过 Composer 来安装这个扩展包: composer require mews/purifier 安装完成后,在配置文件config/app.php的provide

ThinkPHP2.x防范XSS跨站攻击的方法_php实例

本文实例讲述了ThinkPHP2.x防范XSS跨站攻击的方法.分享给大家供大家参考.具体如下: 一直使用ThinkPHP2.x,通过乌云有向提交了ThinkPHP XSS攻击的bug,抽时间看了一下. 原理是通过URL传入script标签,ThinkPHP异常错误页面直接输出了script. 原理: http://ask.lenovo.com.cn/index.php?s=1%3Cbody+onload=alert(1)%3E 其中m的值是一个不存在的module,同时是一个完全的script,

Laravel5中防止XSS跨站攻击的方法_php实例

本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HTMLPurifier 防止 XSS 跨站攻击. 1.安装 HTMLPurifier 是基于 PHP 编写的富文本 HTML 过滤器,通常我们可以使用它来防止 XSS 跨站攻击,更多关于 HTMLPurifier的详情请参考其官网:http://htmlpurifier.org/.Purifier 是

ThinkPHP防范XSS跨站攻击方法介绍

如下的例子,在服务器上有如下代码:  代码如下 复制代码 index.php?s=1%3Cbody+onload=alert(1)%3E 或 article.php?title=<meta%20http-equiv="refresh"%20content="0;"> 其中m的值是一个不存在的module,同时是一个完全的script,在异常错误页面中被执行实现XSS跨站攻击. 防范方法: 找到异常错误页面模板ThinkException.tpl.php(

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

本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HTMLPurifier 防止 XSS 跨站攻击. 1.安装 HTMLPurifier 是基于 PHP 编写的富文本 HTML 过滤器,通常我们可以使用它来防止 XSS 跨站攻击,更多关于 HTMLPurifier的详情请参考其官网:http://htmlpurifier.org/.Purifier 是

PHP和XSS跨站攻击

攻击 其实这个话题很早就想说说了发现国内不少PHP站点都有XSS漏洞.今天偶然看到PHP5的一个XSS漏洞在此小结一下.顺便提醒使用PHP5的朋友最好打下补丁或者升级一下. 如果你不懂什么是XSS可以看这里或者这里中文的也许会好懂一些. 国内不少论坛都存在跨站脚本漏洞例如这里  有一个Google Hack+XSS的攻击例子针对的是Discuz 4.0.0RC3.国外也很多这样的例子甚至Google也出现过不过在12月初时修正了.跨站攻击很容易就可以构造而且非常隐蔽不易被查觉通常盗取信息后马上跳

PHP和XSS跨站攻击的防范_php技巧

其实这个话题很早就想说说了发现国内不少PHP站点都有XSS漏洞.今天偶然看到PHP5的一个XSS漏洞在此小结一下.顺便提醒使用PHP5的朋友最好打下补丁或者升级一下. 如果你不懂什么是XSS可以看这里或者这里中文的也许会好懂一些. 国内不少论坛都存在跨站脚本漏洞例如这里  有一个Google Hack+XSS的攻击例子针对的是Discuz 4.0.0RC3.国外也很多这样的例子甚至Google也出现过不过在12月初时修正了.跨站攻击很容易就可以构造而且非常隐蔽不易被查觉通常盗取信息后马上跳转回原

WordPress4.8.1版本存在XSS跨站攻击漏洞

2017年10月19日,阿里云安全威胁情报系统监测到WordPress 官方发布了一条安全通告表示在4.8.1版本中发现了一个存储型的XSS漏洞,通过该漏洞,攻击者可以在受影响网站的评论区写下包含恶意代码的留言,当该留言页面被打开时,其中的恶意代码会执行,导致该网站的权限,插件等被更改,甚至被完全控制,安全风险为高危. 阿里云安全建议站长们关注,并尽快开展自查工作,及时更新WordPress. 具体详情如下: 漏洞编号: 暂无 漏洞名称: WordPress储存型XSS漏洞 官方评级: 高危 漏

PHP下使用富文本过滤器 HTML Purifier 防止xss跨站攻击

随着html可视即可得编辑器的流行,很多网站使用了这样的编辑器,比如FCKEditor.百度UEditor编辑器等等. 跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多大公司也为此吃尽苦头.最简单直接的防范方法,就是不允许任何html标签输入,对用户输入进行编码(htmlencode). 但是如果想用户输入支持一些格式,怎么办?一种办法就是很多论坛采用的BB Code的方法.使用特定的标签代替一些格式.比如:[ B ]表示粗体,等等.但是,BB Code这种形式并不被广泛接受,它的表现力