Cookie文件不能作为代码执行,也不会传送病毒,它为用户所专有并只能由创建它的服务器来读取。
浏览器一般只允许存放300个Cookie,
每个站点最多存放20个Cookie,
每个Cookie的大小限制为4KB,
Cookie代表了你的身份,那么安全性就有得考虑了。
1.Cookie欺骗:
Cookie记录了用户的帐户ID、密码之类的信息,通常使用MD5方法加密后在网上传递。经过加密处理后的信息即使被网络上一些别有用心的人截获也看不懂。然而,现在存在的问题是,截获Cookie的人不需要知道这些字符串的含义,只要把别人的Cookie向服务器提交,并且能够通过验证,就可以冒充受害人的身份登陆网站,这种行为叫做Cookie欺骗。
别人穿了你的衣服,冒充你去做了新郎
2.Cookie截获
Cookie以纯文本的形式在浏览器和服务器之间传送,很容易被他人非法截获和利用。任何可以截获Web通信的人都可以读取Cookie。
这个就是一些新手,还有一些网站,傻乎乎的把用户的账户和密码,明文在互联网上传送。核心信息都是加密传送的。记住一点,你发出的任何经过浏览器的信息,提交的表单,不仅仅服务器知道,还有网络传送过程的经历的那些路由器
Cookie截获
http://www.XXX.net/tXl/login/login.pl?username=
步骤二:编制收集Cookie的PHP脚本,并将其放到用户可以控制的网站上,当不知情者点击了构造的URL后可以执行该PHP代码。该脚本的具体内容如下:
将这段代码放到网络里,则能够收集所有人的Cookie。如果一个论坛允许HTML代码或者允许使用Flash标签,就可以利用这些技术收集Cookie的代码放到论坛里,然后给帖子取一个吸引人的主题,写上有趣的内容,很快就可收集到大量的Cookie。在论坛上,有许多人的密码就是被这种方法盗走的。
明白为啥那么多安全团队都会明确指出你的search.php的参数,可以注入javascript脚本是多么的危险啊
废话那么多。只是我好奇
如何防止cookie被伪装,盗取
答案1:不用cookie,用session (session的硬伤是无法做到保持用户一年免输入密码登录)
答案2:用cookie,但是我加密
比如常规情况下我保存一个cookie username
setcookie("username",$username);
现在我保存2个 username, token
setcookie("username",$username);
setcookie("token",$token);
$token 是怎么来的
$token = md5($username.'salt2017');
用一个特殊的key做了个MD5
如果一个黑客截获了cookie的username,那么对不起,token您还得对。
刚才不是说cookie欺骗,只要拿到串串不就可以搞了么。
是的。不过黑客常规情况下,是今天截获了大量的cookie,等收集一批了才去用。
如果他拿到你的$token 照样装成你
所以一半可以再加个时间维度
$token = md5($username.'salt2017'.$time);
这个是你生成cookie的时候的时间,系统把这个时间存入数据库。下次登录,更新这个时间和$token
这样,你再次登录以后,黑客拿到的上次的$token 就没有意义了。
(曾经研究过sina微博的token,好像一个token只能用半小时,月小升估计微博的强大的JS技术,有个算法,超过半小时,重新为你生成一个token)
参考文章
http://www.jb51.net/article/61553.htm
http://blog.csdn.net/webwalker/article/details/707927
http://www.jb51.net/article/84274.htm
更高级的cookie介绍
http://www.freebuf.com/articles/web/103089.html
http://blog.csdn.net/zzzmmmkkk/article/details/10862949