跨站式脚本(Cross-SiteScripting)XSS攻击原理分析第3/4页

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

危害
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击

防范
1、必须明确:一切输入都是有害的,不要信任一切输入的数据。
2、缓和XSS问题的首要法则是确定哪个输入是有效的,并且拒绝所有别的无效输入。
3、替换危险字符,如:"&", "<", ">", ""","'", "/", "?",";", ":", "%", "<SPACE>", "=", "+"。各种语言替换的程度不尽相同,但是基本上能抵御住一般的XSS攻击。

a.ASP中的Server.HTMLEncode: <%= Server.HTMLEncode("The paragraph tag: <P>") %>
b.ASP.NET的Server.HtmlEncode及Server.UrlEncode: String TestString = "This is a <Test String>.";
String EncodedString = Server.HtmlEncode(TestString);
Server.UrlEncode(Request.Url.ToString());
4、有些网站使用过滤javascript关键字的办法来防止XSS,其实是很不明智的,因为XSS有时候根本就不需要javascript关键字或者对javascript关键字进行格式变化来躲过过滤。

5、为所有的标记属性加上双引号。应该说这也不是万全之策,只是在转义了双引号的前提下的一道安全保障。比如: 不加双引号时,onclick被执行了:
<a href=http://www.xxx.com/detail.asp?id=2008 onclick='javascrpt:alert('haha')'>
加上了双引号,onclick不会被执行:
<a href="http://www.xxx.com/detail.asp?id=2008 onclick='javascrpt:alert('haha')'">
6、将数据插入到innerText属性中,脚本将不会被执行。如果是innerHTML属性,则必须确保输入是安全的。如ASP.NET中:

相关文章

最新评论