爱就一个字!
分类: 系统运维
2011-06-18 10:21:12
它指的是恶意攻击者往Web里面插入恶意的html代码,当用户浏览该页面时,嵌入其中的html代码会被执行,从而达到恶意用户的特殊目的。
XSS属于被动式的攻击,因为其被动且不好被利用,所以许多人常常忽略其危害性。
【漏洞成因】
1、 CGi程序没有对用户提交的输入数据进行验证,没有对对其中的的HTML代码进行过滤或者转换
2、 没有对包含不可信用户输入数据的输出进行编码
【漏洞危害】
1、 获取其它用户Cookie信息
2、 修改、伪造页面信息,进行钓鱼攻击等
3、 其它
【原理演示】
1、 在页面
可以注册或者登录用户,当用户填写注册后,在页面login.php中显示欢迎信息。
后台代码没有对用户信息进行任何的过滤、编码或者转换。
if($_GET["user"])
{
echo "Register new member:".$_GET["user"];
}
那么,这里就存在XSS漏洞,当我们在user文本框中嵌入javascript脚本,那么在欢迎网页中运行这段脚本如下:
运用这个原理,那么我们在user文本框中输入下面的脚本:
在IE6、IE9中自动打开网页。
而在chrome12中,则不会出现问题,chrome12自动将用户输入进行了编码,如下:
基于上面的原理,对于一些对输入数据长度进行限制的文本框,我们不方便写入过长的内容,可以在输入框内是引入一个外部的javascript脚本。动态创建一个script标记,代码如下:
javascript: s=document.createElement("script");s.src="";document.body.appendChild(s);> 而在没有有过滤的网站,将在展示的时候自动运行这个脚本。 通过这个原理,我们可以改变网页的Dom结构,css样式是网页面目全非,或者是进行钓鱼攻击。获得用户的password等敏感信息。当然这些需要更加精细的伪装。 【解决方法】 2. 对网页的输出接口进行编码。任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS 攻击。 3.在cgi程序进行发布前,对网页进行XSS、CSRF检测 4. Cookie 防盗 其次,通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值,不可能拿来重放。 3. 升级到最新的浏览器版本。 XSS攻击详解
XSS跨站脚本攻击原理: http://yfyfj.blog.163.com/blog/static/1542478420112332114150/ Microsoft
Anti-Cross Site Scripting Library V1.5: Protecting the Contoso Bookmark Page:
XSS攻击原理与方法 http://blog.sina.com.cn/s/blog_51b6521b0100io5r.html
要避免受到跨站脚本执行漏洞的攻击,需要程序员和用户两方面共同努力:
程序员:
1. 过滤或转换用户提交数据中的HTML代码,一切用户提交的数据都是不可靠的。 首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;
首先,避免直接在cookie 中泄露用户隐私,例如email、密码等等。
5. 尽量采用POST 而非GET 提交表单
POST 操作不可能绕开javascript 的使用,这会给攻击者增加难度,减少可利用的跨站漏洞。
6. 严格检查refer
检查http refer 是否来自预料中的url。
用户:
1. 不要轻易访问别人给你的链接
2. 禁止浏览器运行JavaScript和ActiveX代码
参考: