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