作为用户,为了防止cookie盗窃,可以在浏览器设置中选择“禁用cookie”,但是这样做很可能导致在访问某个站点的时候弹出警告“该站点必须使用cookie”.
cookie主要有两种形式:
会话cookie: 存储在浏览器的内存中,在浏览器的每次请求中通过Http Header进行传递;
持久cookie: 存储在计算机硬盘文件中,在浏览器的每次请求中通过Http Header进行传递。
二者的权标在于,站点在会话结束时,会忘记会话cookie,但持久cookie不同,下一次访问站点时,站点仍然记得它。
如果能够窃取某个人在一个网站上的身份验证cookie,就可以在该网站上冒充他,执行他的权限内的所有操作。这种攻击依赖于XSS,必须在目标网站中注入一些脚本才能窃取cookie。
阻止cookie窃取
在web.config文件中对所有的cookie进行设置:
<httpCookies httpOnlyCookies="true" requireSSL="false" />
也可以在程序中为表写的每个cookie单独设置:
Response.Cookie["MyCookie"].Value = "Value";
Response.Cookie["MyCookie"].HttpOnly = true;
这个标志会告诉浏览器,除了服务器修改或者设置cookie之外,其他一些对cookie的操作均无效。这能阻止大部分基于XSS的cookie问题。