Cookie & Session
无状态的Http协议
Http协议是无状态的协议。不会一直连接着,就是客户端向服务器发出请求,然后服务器端回复,一旦数据交换完毕,客户端与服务器端的连接就会断开。再次交换数据就需要建立新的连接,意味着服务器端无法跟踪会话。而一个用户的所有请求都应该属于同一个会话。类似于用户A在超市购买的任何商品都应该放在A的购物车内,不论A什么时间购买都应该属于同一个会话,不能放入用户B或者C的购物车内。
由于Http是一种无状态的协议,服务器单从网络连接上无从知道客户身份。cookie机制与session机制都用于解决存储客户状态的问题,cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。
Cookie机制
简而言之,Cookie的工作原理就是服务器给客户端们颁发一个通行证,每人一个,无论谁访问都必须携带自己的通行证。这样服务器就能从通行证上确认客户身份了。
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就用resonse向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再次访问该网站时,浏览器把请求的网址联通该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。
正统的Cookie分发是通过拓展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的Cookie。而Cookie的使用是由浏览器按照一定的原则在后台发给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在位置,则把该cookie附在请求资源的HTTP请求头上发给服务器。
cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。
Session机制
Session是另一种记录客户状态的机制,不同于Cookie保存在客户端浏览器中,Session保存在服务器上。客户端浏览器访问服务器时,服务器把客户端信息以某种形式记录在服务器上。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户方案,客户来访的时候只需要查询客户档案表就可以了。
Session通过Cookie来识别是否是同一用户,但当Cookie被客户端浏览器禁用后,可通过URL重写的方式记录Session。
URL地址重写的原理是将该用户Session的id信息重写到URL地址中,服务器能够解析重写后的URL获取Session的id。
So
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
CSRF攻击
csrf的中文名称为跨站请求伪造,就是攻击者盗用了你的身份,用你的名义发送恶意请求。
CSRF原理

CSRF服务器端的防御
中心思想是在客户端页面增加伪随机数,使得攻击方无法伪造
参考文献:
- Cookie/Session机制详解 http://www.360doc.com/content/11/1227/00/198_175229712.shtml
- Cookie和Session的区别详解 http://www.cnblogs.com/shiyangxt/articles/1305506.html
- 浅谈CSRF攻击方式 http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
本文详细介绍了HTTP协议中的Cookie和Session机制,解释了这两种方法如何帮助服务器跟踪客户端状态,并探讨了它们之间的区别。此外还讨论了CSRF攻击的概念及其防御措施。
3343

被折叠的 条评论
为什么被折叠?



