你的cookie安全吗?

 

还记得上次的cookie吗?...



上次我们提到,要讨论如何使用php和javascript实现和操作cookie和session,但考虑到大部分同学没有这方面的基础,加上作为科普文的性质,我们就跳过这些,和大家聊聊和我们息息相关的安全问题。

强调,本文为科普性质,很多细节已经忽略,轻喷!

首先,我们来看一个有趣的案例,这个案例的主角就是我们非常熟悉的超!级!课程表!在我们愉快地查看个人课程表时,来看看下面这段对话

“为什么你会有我的课程表信息呢?”
“因为你给了我你们教务系统的帐号密码啊!”
“哦,原来你帮我登录教务系统查的啊,你们客服人员真多啊”

当然,这是一个笑话,它当然是通过我们教务系统登录后获得课程表的,不同的是,它是通过代码实现的(相信很多小伙伴都玩过教务系统【手动囧】),大概过程是这样的

  1. 获得帐号密码,组装登录信息数据(比如验证码,防止别人通过这种方式登录的一些验证字段等)
  2. 通过post方式将这些信息发送给我们的教务管理系统
  3. 登录成功!

到这里需要解释一点,不要以为登录成功后我们就能通过CCCV(复制粘贴)获得课程表信息了,不要忘了一点,我们是通过代码模拟登录的!并不是通过浏览器!所以,意味着我们需要手动发送http请求,而不是通过浏览器帮我们而直接获得课程表页面。

重点来了,我们要获取课程表,就需要再次发送一个请求给课程表提供者 “那个,小教啊,能不能把lingeors的课程信息发给我? ” 教务系统就要检查一下我是不是已经登录了,“是lingeors啊,你已经登录了,信息给你”。课程信息,get!
上面需要注意一点,它怎么知道我已经登录了?(当然只有这样他才肯把信息发给我)。这就涉及到上次提到的cookie-session机制。在上面的步骤三中,被登录系统会发送一段能唯一识别用户的字符串给客户端,然后我们可以将他保存到文件,下次我们要获取我们的课程表的时候,就连同这段信息一起发送过去,而这段信息,就是cookie,如下图



收到这串信息,他就可以认为我们已经登录了,我们就可以获取课程信息了。说到这里,大家应该开始明白,cookie很重要有木有!

通过上面的实例,我们应该可以比较直观地认识到cookie的重要性。基于此,我们就可以聊一聊我们的钱包了,哦不,是安全。下面我们讨论一种利用上述方式搞破坏的一种攻击方式: CSRF(Cross-site request forgery)中文就叫做“跨站请求伪造”
我们从一个大网站跳转到其他链接时,常常能收到跳转链接的警告。
原因是什么呢?难道点了一个链接我会有损失? “不信你可以试试【微笑】”。 还是通过几个案例,看看你是怎么死得不明不白的

  • 我登录了淘宝,那我的登录信息自然就保存在了cookie中了。这个时候,你点击了一个危险的网站,奇妙的事情发生了,你的支付宝少了500!买了十本高档的 王!后 ! 雄!收获地址是湖北省黄冈市!懵逼了有木有。事情是这样的,你点击了那个危险网站后,那个网站可能包含了类似下面这段代码



上面的代码大概干了这件事。它把要买的东西发送给了淘宝,因为访问的是
www.taobao.com
这个域名(如果不是则会受到“同源策略”的限制,无法获取不同域名的cookie),浏览器也将他保存的cookie信息放在http首部发送给了淘宝,淘宝发现这个发送信息的已经登录了(想到一句著名的话,“你永远不知道坐在电脑对面的是人还是狗”),就根据input中的数据购买了书,但使用的是你的帐号!所以钱当然是你付了!(不知不觉,你成就了一个高考状元,毕竟十本王后雄)
当然,虽然理论上没问题,但肯定是不能实现的啦,毕竟人家是马云叔叔,但如果是安全性比较差的网站呢?然后不是购买王后雄,而是利用你的登录状态去做其他一些事呢?比如浏览你的隐私资源
这就是跨站请求伪造的一个实例。或者通过xss在你浏览的网页嵌入一段脚本诱使你去点击。但结果都大同小异,获取你的登录状态。上网需谨慎有木有!

本来感觉有好多东西可以写的,然后才发现好多是开发者的事情,比如如何提高使用cookie-session的安全性。但对于我们普通互联网用户,我们很多时候无可奈何,所以就再说一个大家都普遍忽略或者不重视的问题收尾吧【囧】
我们每天都在使用互联网,但互联网的安全我们却很少理会。先看下面这张图,



这些奇奇怪怪的东西就是我刚刚访问网易邮箱发出和接受到的消息。没错,每次你上网看到的漂亮的网页不是漂亮的网页,而是由这些奇奇怪怪的东西经过一些解析然后组装起来的!而我仅仅是使用了一个小小的工具就获取到了我上网的所有数据,并且,我也可以将某些消息截获,比如登录消息,然后查看或篡改里面的内容,然后再发送出去,是不是很懵逼。。。同样的道理,我们连接的公共WIFI就可以轻而易举地做到这些事(想象有人遵在那盯着你的信息,“这个没啥用,哟哦,这个银行卡帐号挺漂亮的,收了”。。。虽然同个局域网内的数据基本也是公开的。但至少一般没人遵在那)!所以,不要连接陌生的wifi!!!更不要在使用公共wifi的时候使用含有隐私的操作!特别是支付宝银行卡等信息(虽然https相对安全,但你有钱,你任性咯)!

@author: lingeors
@time: 2016-04-12 22:47:56



    关注 华工无协


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册