您的位置:首页 > 其它

不同脚本操作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.     服务器<---------密文---------客户端

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

       

       

        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: