Cookie 禁用了,Session 還能用嗎?

在默認(rèn)的JSP、PHP配置中,SessionID是需要存儲在Cookie中的,默認(rèn)Cookie名為:

PHPSESSIONID

JSESSIONID

以下以PHP為例:

你第一次訪問網(wǎng)站時(shí),

服務(wù)端腳本中開啟了Sessionsession_start();

服務(wù)器會生成一個(gè)不重復(fù)的 SESSIONID 的文件session_id();,比如在/var/lib/php/session目錄

并將返回(Response)如下的HTTP頭 Set-Cookie:PHPSESSIONID=xxxxxxx

客戶端接收到Set-Cookie的頭,將PHPSESSIONID寫入cookie

當(dāng)你第二次訪問頁面時(shí),所有Cookie會附帶的請求頭(Request)發(fā)送給服務(wù)器端

服務(wù)器識別PHPSESSIONID這個(gè)cookie,然后去session目錄查找對應(yīng)session文件,

找到這個(gè)session文件后,檢查是否過期,如果沒有過期,去讀取Session文件中的配置;如果已經(jīng)過期,清空其中的配置

如果客戶端禁用了Cookie,那PHPSESSIONID都無法寫入客戶端,Session還能用?

答案顯而易見:不能

并且服務(wù)端因?yàn)闆]有得到PHPSESSIONID的cookie,會不停的生成session_id文件

取巧傳遞session_id

但是這難不倒服務(wù)端程序,聰明的程序員想到,如果一個(gè)Cookie都沒接收到,基本上可以預(yù)判客戶端禁用了Cookie,那將session_id附帶在每個(gè)網(wǎng)址后面(包括POST),
比如:

GET http://www.xx.com/index.php?session_id=xxxxx
POST http://www.xx.com/post.php?session_id=xxxxx

然后在每個(gè)頁面的開頭使用session_id($_GET['session_id']),來強(qiáng)制指定當(dāng)前session_id

這樣,答案就變成了:能

聰明的你肯定想到,那將這個(gè)網(wǎng)站發(fā)送給別人,那么他將會以你的身份登錄并做所有的事情
(目前很多訂閱公眾號就將openid附帶在網(wǎng)址后面,這是同樣的漏洞)。

其實(shí)不僅僅如此,cookie也可以被盜用,比如XSS注入,通過XSS漏洞獲取大量的Cookie,也就是控制了大量的用戶,騰訊有專門的XSS漏洞掃描機(jī)制,因?yàn)榇罅康?span id="w0dbjnb" class="token constant">QQ盜用,發(fā)廣告就是因?yàn)?span id="sqm7tcn" class="token constant">XSS漏洞

所以Laravel等框架中,內(nèi)部實(shí)現(xiàn)了Session的所有邏輯,并將PHPSESSIONID設(shè)置為httponly并加密,這樣,前端JS就無法讀取和修改這些敏感信息,降低了被盜用的風(fēng)險(xiǎn)。

Cookie在現(xiàn)代

禁用Cookie是?IE6?那個(gè)年代的事情,現(xiàn)在的網(wǎng)站都非常的依賴Cookie,禁用Cookie會造成大量的麻煩。

在Flash還流行的年代,F(xiàn)lash在提交數(shù)據(jù)會經(jīng)常出現(xiàn)用戶無法找到的情況,其實(shí)是因?yàn)镕lash在IE下是獨(dú)立的程序,無法得到IE下的Cookie。
所以在Flash的flash_var中,一般都會指定當(dāng)前的session_id,讓Flash提交數(shù)據(jù)的時(shí)候,將這個(gè)session_id附帶著提交過去
Chrome中使用 Flash沙箱 已經(jīng)解決了cookie的問題,但是為了兼容IE,比如swfupload等flash程序都要求開發(fā)者附帶一個(gè)session_id


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,928評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內(nèi)容