纳金网

标题: 关于跨站脚本攻击及防范 [打印本页]

作者: 晃晃    时间: 2011-8-8 08:58
标题: 关于跨站脚本攻击及防范

一、跨站脚本攻击的概念

跨站点脚本攻击即CSS(Cross Site Script),也称为XSS,是一种针对特殊Web站点的客户隐私的攻击。

目前,网络安全问题已经是全世界共同关注的问题。跨站脚本攻击被认为是目前为止网络安全中最为常用,攻击成功率最高的一种攻击手段。攻击者改变了以往单一攻击服务器或者客户端的攻击模式,而是借用我们的服务器,向WEB页面的可用链接中插入恶意代码,当我们的用户打开这些带有恶意代

码的链接时,内嵌程序被提交并且执行,从而使攻击者能够窃取用户cookie,甚至装扮成被攻击的用户来完全控制Web应用程序,达到他的特殊目的。

二、跨站脚本攻击的危害

一般来说,XSS并不会对用户的机器造成损害,也不会对Web应用程序服务器直接造成破坏。攻击者的主要目的是窃取用户Cookie,在被攻击用户面前伪装成Web应用程序,或者在Web应用程序面前伪装成被攻击用户。所以,在XSS攻击所涉及三方面——攻击者、被攻击者(网页浏览者)、存在漏洞的网站——网站只是攻击者进行攻击的一个载体,本身基本不会受到影响,只有被攻击者会实际运行攻击者的代码,面临着的安全威胁主要有以下几个方面。

具体危害主要有以下几个方面:

1、 账户失窃。

2、 数据信息被读取、篡改、添加或者删除。

3、 非法转账。

4、 强制发送电子邮件。

5、 受控向其它网站发起攻击等。

三、跨站脚本攻击的方式与对策

XSS是一种被动式的攻击,并不容易被利用,所以技术人员在进行网站开发的过程中常常会忽略其危害性,实际上,XSS的攻击能力和破坏能力都是非常强的,因此,我们在写一些Web程序时一定要注意这一点。

跨站攻击有多种方式,由HTML语言允许使用脚本进行简单交互,入侵者便通过技术手段在某个页面里插入一个恶意HTML代码——例如记录论坛保存的用户信息(Cookie),由于Cookie保存了完整的用户名和密码资料,用户就会遭受安全损失。当然,攻击者有时也会在网页中加入一些以.JS或.VBS为后缀名的代码时,在我们浏览时,同样我们也会被攻击到。因此攻击者可以通过多种方式发起攻击,如可以通过电子邮件,QQ消息或其他途径向受害者发送一个经过精心构造的恶意的URL,当受害者在WEB浏览器中打开这个地址时,网站会显示一个页面并在受害者的计算机上执行脚本。

也就是说如果Web页面应用程序接受用户通过HTTP请求(如GET或POST)提交的输入信息,然后使用输出HTML代码在某些地方显示这些信息,但可能存在XSS漏洞。

如下面一段ASP程序就存在一定漏洞。

<body>

<%response.write request.querystring("Title")%>

</body>

我可以得交正常的参数。如:

http://网址/index1.asp?title=ABCD

那么该WEB程序将输入:

ABCD

但如果提交非正常信息的话,如:

http://网址/index1.asp?title=<script>document.body.innerHTML="<img%20src=http://网址/images/logo.gif>"</script>

将会显示一个图片。而下面的代码:

http://网址/index1.asp?title=<script>alert('ABCD')</script>

将通过脚本产生一个消息框。

以上是最简单的两个例子,其实,攻击者利用链接可以做更多的事情。如下面两段链接:

http://网址/index1.asp?title=<script>document.body.innerHTML="<h1>Company Login</h1><form action=http://网址 method=get><p>User Name:<input type=text name=u><p>assword<input type=password name=p><input type=submit name=login></form>"; </script>

可以产生一个带用户帐号输入框及密码框的一个提交页

http://网址/index1.asp?title=<script>document.write%20( + document.cookie + );</script>

可以显示出用户的Cookies。

由于能够在生成的WEB页面中注入代码,能想到威胁有多么严重,就可以有多么严重的威胁,攻击者可以利用漏洞窃取Cookies,网站钓鱼,劫持帐号,执行者ActiveX,执行Flash内容,强迫用户下载软件,或者是对硬盘和数据采取各种操作。

要防止XSS攻击,就需要程序开发者在WEB程序开发时,非常注意XSS漏洞的检查,尤其是对用户的输入或提交的数据进行合法化检查。如用扫描法来进行合法化检测:

<%

qs=request.servervariables("query_string")

nothis=split("<script>|document.write|document.cookie","|")

errc=false

for i= 0 to ubound(nothis)

if instr(qs,nothis(i))<>0 then

errc=true

end if

next

if errc then

response.write "<script language=""javascript"">"

response.write "parent.alert('非法操作!您提交了错误的信息...');"

response.write "self.location.href='http://网址';"

response.write "</script>"

response.end

end if

response.write request.querystring("Title")

%>

</body>
关于防止XSS攻击的几个小建议:

1、应该使用HtmlEnCode之类的函数将危险的符号转换成它们的HTML表示形式。

2、使用双引号而不是单引号,这是因为HTML编码仅转义双引号。

3、强制一个代码页以限制可以使用的字符数。

4、通过正则表达式,限制一个HTML标记。

5、对于普通用户来讲,尽量不要随意打开不明链接,尤其是邮件或QQ中发来的链接,攻击者往往会通过群发的方式,发送大量欺骗信息,导致浏览者上当。

作者: Asen    时间: 2011-9-6 10:04

作者: C.R.CAN    时间: 2012-1-30 23:19
笑声,欢天喜地;幸运,铺天盖地;才情,经天纬地;财气,呼天唤地;豪气,遮天盖地;福气,惊天动地;春节,冰天雪地;快乐,翻天覆地!

作者: 奇    时间: 2012-6-8 23:22
真不错,全存下来了.

作者: 菜刀吻电线    时间: 2012-8-2 01:07
非常感谢,管理员设置了需要对新回复进行审核,您的帖子通过审核后将被显示出来,现在将转入主题

作者: C.R.CAN    时间: 2012-8-6 00:23
加精、加亮滴铁子,尤其要多丁页丁页

作者: 晃晃    时间: 2012-10-9 23:22
不错 非常经典  实用





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5