不同脚本操作cookie的机制探究
2015-08-15 14:31
232 查看
一直在思考一个问题,js是运行在客户端的脚本,当然可以通过浏览器建立和读取本地cookie;但php是运行在服务器的脚本,它是如何操作cookie的呢,毕竟cookie是用户的本地文件,却被运行在服务器的代码操纵,岂不是有践迹入室,损害客户隐私的嫌疑吗?于是写了一段脚本来测试一下php操作cookie的机制。
<?php
$cookiename = "TestCookie";
$cookievalue = "Saintre's cookie test";
setcookie($cookiename,$cookievalue);
echo $TestCookie;
echo $HTTP_COOKIE_VARS['TestCookie'];
echo $_COOKIE['TestCookie'];
?>
打开的页面只输出了一句“Saintre's cookie test”,只有$_COOKIE['TestCookie']的值生效了。似乎php5没有了以前版本的创建一个cookie值的同时创建一个同名变量的机制。$HTTP_COOKIE_VARS也是php4才使用的超全局变量。现在改变这个页面,测试读取客户端的cookie值“
<?php
#$cookiename = "TestCookie";
#$cookievalue = "Saintre's cookie test";
#setcookie($cookiename,$cookievalue);
echo $TestCookie;
echo $HTTP_COOKIE_VARS['TestCookie'];
echo $_COOKIE['TestCookie'];
?>
重启服务器,仍然能读取到该值。继而去浏览器临时文件中试着查看一下cookie,系统盘>>users>>你的用户文件夹>>AppData>>Foaming>>SogouExplorer>>Webkit>>Default,此文件夹下存放了一个Cookie文件,打开后发现部分数据被加密了,另存为txt,搜索”TestCookie“:
localhostTestCookie/ .{雔8潴 袑澾?寊 繭聴? ??'8 K剢4*?!? f Ye葒葱烏飠δ伙咻鈾A*\宯 € Kq垛鶧ㄞ俎L?)?蔐详腀釽嶥釯 =[**X谹齱-??-傋W潷;涭<凷??螥 ?撵"?喋諄補7绨餛6?悶Ax? 圗WG/"?讕刱? jpjDh鬹\KS'g悇F:
搜狗浏览器把cookie的值加密了,但名字没有加密。
总结:php脚本通过setcookie函数创建cookie,并以一定方式把键值对传送给客户端,读取的时候则提供cookie的键名,浏览器通过审视”网址“和”键名“两个值,在本地cookie文件中查找相应的cookie值返回给服务器。当然真正使用setcookie需要详细设置cookie的各项参数,如失效时间等,这次只是做测试,一切从简。
果然浏览器才是最危险的...
考虑,假如服务器把用户输入的用户名和密码加密之后,通过setcookie传送的本地保存,在用户进行免登陆操作时,请求该cookie:
1. 服务器---------密文--------->客户端 2. 服务器<---------密文---------客户端
尽管是密文,但可以通过抓包,直接使用抓取的密文伪造一个一模一样的包发给服务器,岂不是也能登陆别人的账号?
<?php
$cookiename = "TestCookie";
$cookievalue = "Saintre's cookie test";
setcookie($cookiename,$cookievalue);
echo $TestCookie;
echo $HTTP_COOKIE_VARS['TestCookie'];
echo $_COOKIE['TestCookie'];
?>
打开的页面只输出了一句“Saintre's cookie test”,只有$_COOKIE['TestCookie']的值生效了。似乎php5没有了以前版本的创建一个cookie值的同时创建一个同名变量的机制。$HTTP_COOKIE_VARS也是php4才使用的超全局变量。现在改变这个页面,测试读取客户端的cookie值“
<?php
#$cookiename = "TestCookie";
#$cookievalue = "Saintre's cookie test";
#setcookie($cookiename,$cookievalue);
echo $TestCookie;
echo $HTTP_COOKIE_VARS['TestCookie'];
echo $_COOKIE['TestCookie'];
?>
重启服务器,仍然能读取到该值。继而去浏览器临时文件中试着查看一下cookie,系统盘>>users>>你的用户文件夹>>AppData>>Foaming>>SogouExplorer>>Webkit>>Default,此文件夹下存放了一个Cookie文件,打开后发现部分数据被加密了,另存为txt,搜索”TestCookie“:
localhostTestCookie/ .{雔8潴 袑澾?寊 繭聴? ??'8 K剢4*?!? f Ye葒葱烏飠δ伙咻鈾A*\宯 € Kq垛鶧ㄞ俎L?)?蔐详腀釽嶥釯 =[**X谹齱-??-傋W潷;涭<凷??螥 ?撵"?喋諄補7绨餛6?悶Ax? 圗WG/"?讕刱? jpjDh鬹\KS'g悇F:
搜狗浏览器把cookie的值加密了,但名字没有加密。
总结:php脚本通过setcookie函数创建cookie,并以一定方式把键值对传送给客户端,读取的时候则提供cookie的键名,浏览器通过审视”网址“和”键名“两个值,在本地cookie文件中查找相应的cookie值返回给服务器。当然真正使用setcookie需要详细设置cookie的各项参数,如失效时间等,这次只是做测试,一切从简。
果然浏览器才是最危险的...
考虑,假如服务器把用户输入的用户名和密码加密之后,通过setcookie传送的本地保存,在用户进行免登陆操作时,请求该cookie:
1. 服务器---------密文--------->客户端 2. 服务器<---------密文---------客户端
尽管是密文,但可以通过抓包,直接使用抓取的密文伪造一个一模一样的包发给服务器,岂不是也能登陆别人的账号?
相关文章推荐
- 深入浅出Java并发包—锁机制(一)
- Linux C语言程序设计(十二)——Shell编程的基础知识
- hdu5389Zero Escape 01背包
- 递归算法讲解
- 面向对象基本定义及概念
- JSP内置对象(主要指page、request、session、application)
- 回溯算法讲解
- JQuery下锚点的平滑跳转
- C# 集合类型
- linux下的目录处理命令
- POJ 3104- Drying-二分
- 【自考学习】数据库系统原理总结
- 动态规划法讲解
- 设计一个一百亿的计算器
- 嵌入式web的一些理解(实习笔记)
- 黑马程序员----java中的异常
- python2.7学习笔记(4) ——条件判断、循环、dict、set
- 百度地图----->地图类型、定位模式、实时交通、我的位置、添加覆盖物、覆盖物详情及提示
- spring 整合hibernate
- 分治法算法讲解