专家深入解析跨站请求伪造漏洞(上)
2008-12-25 13:44:09 来源:WEB开发网CSRF和XSS攻击的区别在于,XSS攻击需要JavaScript,而CSRF攻击不需要;XSS攻击要求站点接受恶意代码,而对于CSRF攻击来说,恶意代码位于第三方站点上。过滤用户的输入可以防止恶意代码注入到某个站点,但是它无阻止法恶意代码在第三方站点上运行。由于恶意代码可以在第三方站点上运行,所以防御XSS攻击的措施无法保护站点不受CSRF攻击的危害。如果站点具有XSS攻击漏洞,那么它也有CSRF攻击漏洞。但是,即使站点针对XSS攻击采取了全面保护,却仍然面临CSRF攻击的威胁。
上面介绍了跨站请求伪造的原理、安全问题的根本原因、攻击手法和与跨站脚本攻击之间的区别,下面我们看看现有的安全策略是否能够防御这种攻击。
六、同源策略与跨站请求伪造
Web浏览器有一项艰巨的任务,那就是允许用户维护到达多个网站的安全的专用链接,同时还允许访问包含不可信代码的不可信的站点。另外,站点能够从不同的域加载资源。举例来说,站点a.com 能够分别使用{IMG}或者 {SCRIPT} 标签从b.com加载图象或者JavaScript。然而,如果用户已经登录到一个可信的站点,那么当然不应该让不可信的第三方站点读取可信的站点的内容。
为了能够在允许不可信的站点显示来自外部站点的数据的同时还能保持这些数据的私密性,人们创建了同源策略。该策略不仅定义了“源”的含义,还规定了当访问来自不同源的数据时,站点能做哪些事情。该策略认为,如果两个页面的协议、端口(如果给出的话)和主机完全一致,那么就说这两个页面是同源的。根据同源策略的规定,站点不能读取或者修改来自不同的源的资源。
然而,该策略却允许向不同源请求资源。因此,evil.com 可以在它的站点中通过{IMG}标签包含图像http://trusted.com/image.gif,但是它不能够读取这幅图像的像素。同样的,evil.com也可以在他的站点内利用{iframe}标签来包含http://trusted.com/private.htm ,但是evil.com却不能访问或者修改浏览器显示的这个页面的内容。
更多精彩
赞助商链接