µ±Ç°Î»Ö㺠´úÂëÃÔ >> Webǰ¶Ë >> cookie å’Œsession 的区åˆ??è§
  Ïêϸ½â¾ö·½°¸

cookie å’Œsession 的区åˆ??è§

Èȶȣº4119   ·¢²¼Ê±¼ä£º2013-02-26 00:00:00.0
cookie 和session 的区�?�

二�的定义�

当你在�览网站的时�,WEB �务器会先�一��资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是�些�择�

都纪录下æ�¥ã?‚当下æ?ä½ å†�光临å�Œä¸€ä¸?½‘站,WEB æœ�务器会先看看有没有它上次留下的 Cookie 资料,有的è¯�,就会ä¾�æ�?Cookie

里的内å?æ�¥åˆ¤æ–?½¿ç”¨è?…,é€�出特定的网页内容给你ã??Cookie 的使用很æ™?��,è?多有æ��ä¾›ä¸?ººåŒ–æœ�务的网站,都æ˜?ˆ©ç”?Cookie

æ�¥è¾¨è®¤ä½¿ç”¨è?…,以方便é?�出使用者é‡�èº?®šå�šçš„内å?,åƒ�æ˜?Web 接å�£çš„å…�è´?email 网站,都è¦�用åˆ?Cookieã€?


具体æ�¥è?cookie机制采用的是在å?户ç?ä¿�æŒ�状æ?�的方æ?,è?Œsession机制采用的是在æœ�务器ç«?¿�æŒ�状æ€�的方æ?ã€?

å�Œæ—¶æˆ‘们也看到,由于采用æœ�务器ç?ä¿�æŒ�状æ?�的方æ?在å?户ç?也需è¦�ä¿�存一ä¸? ‡è¯†ï¼Œæ‰?ä»?ession机制å�?ƒ½éœ?è¦�å?ŸåŠ©äºŽcookie机制

æ�¥è¾¾åˆ°ä¿�存标识的ç›?š„,但实际上它还有其他选择ã€?

cookie机制。æ?统的cookie分å�‘æ˜??šè¿‡æ‰©å±•HTTPå��è?æ�¥å®žçŽ°çš„ï¼Œæœ�务器通过在HTTPçš„å“�应头ä¸?Š ä¸Šä¸€è¡Œç‰¹æ®Šçš„æŒ‡ç¤ºä»¥æ��ç¤?

æµ�è?器按照指示生æˆ�相应的cookie。然而纯粹的客户ç«?„šæœ??JavaScript或è?…VBScript也å�¯ä»¥ç”Ÿæˆ�cookie。è?Œcookie的使ç”?

æ˜?”±æµ�è?器按照一定的原则在å�Žå�°è‡ªåЍå�‘é€�ç»™æœ�务器的。æµ�览器æ£?查所有存储的cookie,å?æžœæŸ�个cookieæ‰?声明的作用范å›?

大于等于将è?请求的资æº�所在的ä½�置,则把è?cookie附在请求资æº�çš„HTTP请求头上å�‘é?�ç»™æœ�务器ã??
 
cookie的内容主è¦�包æ‹?¼šå��字,å?¼ï¼Œè¿‡æœŸæ—¶é—´ï¼Œè·¯å¾„和域ã?‚路径与域一起构æˆ�cookie的作用范围ã?‚è‹¥ä¸�è?ç½?¿‡æœŸæ—¶é—´ï¼Œåˆ™è¡¨ç¤ºè¿™

个cookie的生命期为æµ�览器会è¯�期间,关é—?µ�览器窗å�£ï¼Œcookie就消失ã?‚è¿™ç§�生命期为æµ�览器会è¯�期的cookieè¢?§°ä¸ºä¼šè¯�cookieã€?

会è¯�cookieä¸?èˆ?¸�存储在硬盘上而是ä¿�存在内存里,当然这ç§�è?为并ä¸�是规范规定的ã?‚若设置了过期时间,æµ�è?器就会把cookie

ä¿�存到硬盘上,关é—?�Žå†�æ?打开æµ�è?å™?¼Œè¿™äº›cookieä»�然有效直到超过设定的过期时间ã?‚存储在ç¡?›˜ä¸Šçš„cookieå�?»¥åœ¨ä¸�å�Œçš„æµ?

览器进程间共äº?¼Œæ¯”å?两个IE窗å�£ã€‚è?Œå?于ä¿�存在内存里的cookie,ä¸�å�Œçš„æµ�è?器有ä¸�å�Œçš„å?ç�†æ–¹å¼?

session机制。session机制æ˜?¸€ç§�æœ�务器ç«?š„æœºåˆ¶ï¼Œæœ�务器使用ä¸?ç§�类似于散列表的结构(也å�?ƒ½å°±æ˜¯ä½¿ç”¨æ•£åˆ—è¡?¼‰æ�¥ä¿�存信æ�???

          当程åº�需è¦�为æŸ�个客户ç«?š„请求创建ä¸?个session时,æœ�务器é?å…ˆæ?查这ä¸??户ç?çš„è?求里æ˜?�¦å·²åŒ…å�?º†ä¸?个session标识

(称为session id),如果已包å�?ˆ™è¯´æ˜Žä»¥å‰�å·²ç»�为æ?客户ç«?ˆ›å»ºè¿‡session,æœ�务器就按ç…?ession id把这个sessionæ£?索出æ�?

使用(æ?ç´?¸�到,会新建一ä¸?¼‰ï¼Œå?æžœå?户ç?请求ä¸�包å�«session id,则为æ?客户ç«?ˆ›å»ºä¸€ä¸ªsession并且生æˆ�ä¸?ä¸?¸Žæ­?essionç›?

å…³è�”çš„session id,session idçš„å?¼åº”该是ä¸?ä¸?—¢ä¸�会é‡�å?,å�ˆä¸�å?易è?找到规律以仿造的字ç?串,这个session idå°†è?在本次å“�åº?

ä¸?¿”回给客户ç«?¿�å­˜ã?‚ä¿�存这个session id的方å¼�å�¯ä»¥é‡‡ç”¨cookie,这样在交互过程ä¸?µ�览器å�?»¥è‡?Š¨çš„æŒ‰ç…§è?则把这个标识å�‘é?�ç»™

æœ�务器ã?‚一èˆ?¿™ä¸ªcookieçš„å��字都æ˜?±»ä¼¼äºŽSEEESIONID。但cookieå�?»¥è¢?ººä¸ºçš„ç¦�æ?,则必须有其他机制以便在cookieè¢??止时

ä»�然能å?把session idä¼ é?’回æœ�务器ã??

ç»�常è¢?½¿ç”¨çš„ä¸?ç§�技æœ?�«å�šURLé‡�写,就æ˜?ŠŠsession id直接附加在URLè·?¾„çš„å�Žé�??‚还有一ç§�技æœ?�«å�šè¡¨å�•éš�è—�字段ã?‚å°±æ˜?œ�务器

会自动修改表å�•,添加ä¸?ä¸?š�è—�字段,以便在表å�•æ��交时能å?把session idä¼ é?’回æœ�务器ã?‚比如:
<form name="testform" action="/xxx">
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">
<input type="text">
</form>
实际上这ç§�技æœ?�¯ä»¥ç®€å�•的用å?action应用URLé‡�写æ�¥ä»£æ›¿ã??

cookie å’Œsession 的区åˆ?¼š

1ã€�cookieæ•°æ�®å­˜æ”¾åœ¨å?户的æµ�è?器上,sessionæ•°æ�®æ”¾åœ¨æœ�务器上ã€?

2ã€�cookieä¸�是很安å…?¼Œåˆ?ººå�?»¥åˆ†æž�存放在本地的COOKIE并进行COOKIE欺骗
    考虑到安全应当使用session

3ã€�session会在ä¸?定时间内ä¿�存在æœ�务器上ã?‚当访问增å?,会比较å� ç”¨ä½ æœ�务器的æ?§èƒ½
    考虑到å‡�è½»æœ�务器性能方é�¢ï¼Œåº”当使用COOKIE

4ã€�å�•个cookie在å?户ç?çš„é™�制是3K,就æ˜??ä¸?ä¸?«™ç‚¹åœ¨å®¢æˆ·ç«?­˜æ”¾çš„COOKIEä¸�能3Kã€?

5ã€�所以个人建è®?¼š
    将登陆信æ�?­‰é‡�è?ä¿¡æ�¯å­˜æ”¾ä¸ºSESSION
    å…¶ä»–ä¿¡æ�¯å¦‚æžœéœ?è¦�ä¿�留,å�?»¥æ”¾åœ¨COOKIEä¸?

施�出����
  Ïà¹Ø½â¾ö·½°¸