当前位置: 代码网 > it编程>编程语言>安全编程 > 跨站式脚本(Cross-SiteScripting)XSS攻击原理分析

跨站式脚本(Cross-SiteScripting)XSS攻击原理分析

2024年05月18日 安全编程 我要评论
跨站式脚本(Cross-SiteScripting)XSS攻击原理分析

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

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

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中:

7、使用ie6.0sp1的cookie选项httponly,注意,httponly只能阻止恶意脚本读取cookie,并不能阻止xss攻击。比如在asp.net中:

8、使用ie的<iframe>的security属性,设置为restricted后,frame中的脚本将不能执行(仅限于ie)。如:
<iframe security="restricted" src="http://www.somesite.com/somepage.htm"></frame>
9、asp.net中的validaterequest配置选项。默认情况下,这个功能是开启的,这个功能将会检查用户是否试图在cookie、查询字符串以及html表格中设置html或脚本。如果请求包含这种潜在的危险输入,就会抛出一个httprequestvalidationexception异常。我在尝试试探当当网的xss漏洞时发现这个异常信息,可以说当当网使用了validaterequest这个选项,或者从另一方面说,也许是无意中启用了这一选项,同时,将错误信息抛出给用户是非常不安全的。

a、给一个页面设置validaterequest选项:
<%@ page language="c#" validaterequest="false" %>
b、在machine.config中设置全局validaterequest选项,注意,如果在web.config中重新设置,不会覆盖machine.config中的这一设置:
<system.web>
<pages buffer="true" validaterequest="true" />
</system.web>
c、让我们来目睹当当网给我们带来的这一盛况:

10、在一些必须使用到html标签的地方,比如公告栏,可以使用其他格式的标示代替,比如论坛中广泛使用的bbcode,用[i]...["i]来表示斜体。

11、然而,对于一些允许用户输入特定html的地方,强烈建议使用正则表达式进行匹配。比如: if (/^(?:["s"w"?"!","."'""]*|(?:"<"/"?(?:i|b|p|br|em|pre)">))*$/i)
{
#cool, it's valid input
}
发现问题
1、查找所有包含用户输入的入口。
2、跟踪流入应用程序的每一个数据。
3、确定数据是否与输出有关系。
4、如果与输出有关,它是不是原始数据,是不是经过处理的?

参考资料
michael howard, david leblanc. "writing secure code"
mike andrews, james a. whittaker "how to break web software"
http://en.wikipedia.org/wiki/cross-site_scripting
klein, amit (july 4, 2005). "dom based cross site scripting or xss of the third kind". web application security consortium. retrieved on 2008-05-28.
http://ha.ckers.org/xss.html
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com