不同脚本操作cookie的机制探究

一直在思考一个问题,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.     服务器<---------密文---------客户端


        尽管是密文,但可以通过抓包,直接使用抓取的密文伪造一个一模一样的包发给服务器,岂不是也能登陆别人的账号?



       

       

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值