跨站脚本攻击(XSS)的原理、防范和处理方法 -电脑资料

0,

跨站脚本攻击(XSS)的原理、防范和处理方法

。关键字:XSS,跨站脚本攻击,原理分析,攻击方式,防范,检查,恶意代码,蠕虫

1。概念

以下概念摘抄自百度百科:

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

2。生效方式

1)构造URL

XSS攻击者通过构造URL的方式构造了一个有问题的页面;当其他人点击了此页面后,会发现页面出错,或者被暗中执行了某些js脚本,这时,攻击行为才真正生效。

一般来说,动态页面中会将url中的部分内容回写在页面中。以百度的搜索为例:

http://www.baidu.com/s?wd=转义后的结果,搜索结果页中,会在标题中中和搜索框中回写用户输入的内容。从页面的源代码中,我们看到,这两处本应该显示用户输入内容的地方,实际也经过了转义处理,变成了。如果这里没有经过转义处理,则页面中就嵌入了一段script,会执行,并弹出对话框提示用户。如果是其他恶意代码,则可能造成破坏。

然后攻击者将此URL广为传播——比如说,以报错的方式发给百度的管理员,管理员打开这个URL就中招了。

2)发布内容式

构造URL攻击方式传播范围有限,被攻击者只要有基本的安全意识就可以避免,因此这种手段的危险性比较小。相比之下,通过发表内容构造的XSS的危害就大了很多。

在可以发表内容的论坛、讨论区、吧、博客、微博等网站上,用户发表的内容会保存起来,允许其他用户浏览。这些保存的内容显示在页面上的时候,如果没有经过正确的处理,也会把攻击者精心构造的内容显示出来,访问该内容的用户就此中招。如果该页面流传广泛,则影响会更加深远。

一般来说,这种攻击都做得比较隐蔽,被攻击者并不知道自己什么时候踩中了地雷;网站也

很难追查问题的来源。

3)蠕虫式

上述两种方式的流传范围都有一定限度;最彻底最暴力的方式是使用蠕虫——就是首先发一个有问题的文章,浏览者阅读时会被暗中执行恶意代码,发表一篇新的文章的,该文章也含有同样的恶意代码。这样有可能在最快时间内将攻击铺满整个网站。蠕虫式攻击将暗中偷偷摸摸的攻击行为变成了光明正大的攻城拔寨,极容易被发现和修复。

下面是6月28日 被蠕虫攻击的报告,其实质就是XSS攻击,

电脑资料

《跨站脚本攻击(XSS)的原理、防范和处理方法》()。

http://www.ijinshan.com/news/20110629001.shtml

3。破坏方式

1)破坏页面结构

用户输入的内容包含了html的标签,与前面的标签等闭合,导致页面的DIV结构发生变化,页面错乱。

测试

测试

用户输入的内容包含了单引号或双引号,与前面的单引号或双引号匹配,导致后面的内容丢失,显示不出来。

可以使用php内置方法htmlspecialchars来处理待输出的内容,将上述字符转义。

综合1)和2)两者需要处理的内容基本是一样的,而多转义并不会带来副作用,因此可以使用统一的处理方法

$out = htmlspecialchars($out,ENT_QUOTES)

注意第二个参数是明确要求将双引号进行转义。

3)JS

将要输出到js代码片断中的用户输入内容没有好的办法进行处理;仅转义少数字符不能保证去掉所有的攻击可能。

因此,一般建议不要把用户产生的内容直接输出到js片断中。

如果条件所限,必须将内容直接输出,有如下方法可供选择:

a) 如果待输出的内容有特定的取值返围或者特定的格式,可以使用白名单或者正则表达式进行处理。

b) 可以将内容输出到html的隐藏标签或隐藏表单中,js通过获取标签的内容得到该内容。

c) 使用json_encode将内容编码后输出到页面上,页面上使用eval将内容取出来。

5。检查

那么,对已有的页面,该如何检查呢?

这个问题的回答是,目前没有很好的办法能完全检查出可能存在xss攻击的页面;有一些办法可以检查出比较明显的疏漏,其基本思路如下:

1)从apache的access_log中取出所有unique的请求,依次修改其某一个参数为 "",发起请求;

2)获取返回的内容,如果内容中有原样的该字符串,表明此可疑输入没有经过处理便输出到页面上,页面存在隐患,需要处理。

通过这种办法,可以检查出绝大多数能通过get请求发起的xss攻击。那些在access_log没有出现的请求参数,这里没有检查到,可能有所遗漏,就需要手动去整理,测试。

通过Post发起的请求需要用另外一种策略进行检查。其思路如下:

将网站上所有可以输入的表单,依次输入特征字符串,比如说<'">,如果提交后产生的页面中含有未处理的此字符串,说明存在隐患。

相关文章

我心中的桃花源

[我心中的桃花源]我心中的桃花源总想着去找一块属于自己的净土,轻轻地播种下一粒花种,等待着那朵小小的桃花静静的绽放,我心中的桃花源。题记远离城市的喧嚣,来到人间的仙境,在鸟...
资料大全2014-01-09
我心中的桃花源

红白简单求职信封面

这是一个红白简单求职信封面,一起来欣赏吧。附:行政管理专业应届生求职信尊敬的XX经理:您好!本人是广东科学技术职业学院行政管理专业2016届学生,将于今年7月毕业。本人性格: 开朗、自信、乐于学习、敢...
资料大全2016-02-01
红白简单求职信封面

普通话考试说话范文普通话

我觉得我的学生时代是成功的,学习任务虽然繁重,尤其是在六年的中学期间,但是,对于我来说,学习生活也是非常充实的,在学习中,我不惧怕困难。以下内容是小编为您精心整理的普通话考试说话范文普通话,欢迎参考!...
资料大全2012-02-03
普通话考试说话范文普通话

松花蛋的简易制作方法

松花蛋就是人们熟知的皮蛋,其可以制作成各种美味的食物,是夏天下火的好食材。下面小编为你分享一下松花蛋的简易制作方法吧,仅供参考!材料难度:切墩(初级)时间:10分左右主料松花蛋3个姜一小块六月鲜酱油1...
资料大全2017-05-06
松花蛋的简易制作方法

§2.3 平行线特征

§2.3 平行线特征教学目标 1.平行线的性质;2.运用这些性质进行简单的推理或计算;3.经历观察﹑操作﹑推理﹑交流等活动,进一步发展空间观念﹑推理能力和有条理表达的能力;4...
资料大全2014-06-08
§2.3 平行线特征

四年级上册数学期末试卷及答案

一、我会算:(共36分)1、直接写得数:(每题1分)400×70= 320÷40= 15×60= 63÷7×8=15×40= 1600÷80= 7200÷9=640÷80÷4= 634÷70= 25×...
资料大全2015-07-02
四年级上册数学期末试卷及答案