近期学习过程中提到xss攻击的问题,便想要了解一下,总结如下:
XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
1.什么是XSS攻击:
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。
2.XSS的危害:
1、盗取各类用户账号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
3.XSS的几种攻击方式:
图片攻击:<IMG SRC="http://hax0r.com/Haxored.png">
或者视频flash:<EMBED SRC= http://hax0r.com/Haxored.swf
还有网站重定向:<script>window.open( "http://www.hax0r.com/Haxored.html" )</script>
也可以:<meta http-equiv="refresh" content="0; url=http://hax0r.com/Haxored.html" />
或者视频flash:<EMBED SRC= http://hax0r.com/Haxored.swf
还有网站重定向:<script>window.open( "http://www.hax0r.com/Haxored.html" )</script>
也可以:<meta http-equiv="refresh" content="0; url=http://hax0r.com/Haxored.html" />
4.XSS漏洞修复:
A.传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击,但该方法很容易会被破解,如在“JavaScript”单词中间加入空格,Tag键,或者换行等
B.从Web应用开发的角度来避免:
步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。