sessionid怎么取得 能通過(guò)sessionId來(lái)獲取session里的值嗎?
能通過(guò)sessionId來(lái)獲取session里的值嗎?代碼如下: HttpSession sesion = Request.getSesion() if(session!=null){ //如果ses
能通過(guò)sessionId來(lái)獲取session里的值嗎?
代碼如下: HttpSession sesion = Request.getSesion() if(session!=null){ //如果sessionID不等于空,則說(shuō)明是第二次訪問(wèn) //寫第二次訪問(wèn)時(shí)的代碼 }else{ //寫第一次訪問(wèn)的代碼 } java web怎么通過(guò)sessionid得到session這個(gè)我們不需要了解,就是第二次客戶端發(fā)出請(qǐng)求時(shí),將sessionid也發(fā)給了服務(wù)器,服務(wù)器根據(jù)這個(gè)唯一的ID找到相應(yīng)的session(session都是保存在服務(wù)器的數(shù)據(jù)庫(kù)中,每個(gè)session用唯一一個(gè)ID所標(biāo)識(shí)),就像是數(shù)據(jù)庫(kù)中根據(jù)關(guān)鍵字查找數(shù)據(jù)一樣,找到之后就可以直接用這個(gè)session里面的數(shù)據(jù)了。
假設(shè)我拿到了別的用戶的淘寶網(wǎng)站的cookie,我放到自己的http請(qǐng)求里,我就可以冒充這個(gè)用戶嗎?
大家都知道,Cookie是會(huì)話保持技術(shù)方案的一種,從理論上說(shuō)拿到了Cookie是可以冒充用戶的。下面具體分析下:
Cookie的機(jī)制原理
我們知道HTTP協(xié)議本身就是無(wú)狀態(tài)的,服務(wù)器端默認(rèn)情況下是無(wú)法分辨用戶的,這樣顯然是不合理的,所以我們需要給每個(gè)訪客加上一個(gè)“標(biāo)識(shí)口令”。當(dāng)分配了標(biāo)識(shí)口令給客戶端后,客戶端瀏覽器后續(xù)發(fā)起的請(qǐng)求都會(huì)把這個(gè)“標(biāo)識(shí)口令”附帶在請(qǐng)求頭參數(shù)里,這樣服務(wù)器端就能分辨哪些請(qǐng)求是同一個(gè)用戶了。
這個(gè)“標(biāo)識(shí)口令”由服務(wù)器端生成,放置在客戶端瀏覽器Cookie中,而服務(wù)器端對(duì)應(yīng)會(huì)有一個(gè)Session,這個(gè)Session的唯一標(biāo)識(shí)(SessionID)也是存儲(chǔ)在Cookie中。
篡改Cookie可以冒用請(qǐng)求
上面講到了,服務(wù)器端的SessionID是存儲(chǔ)在客戶端Cookie中的,這樣一來(lái)其它用戶一旦拿到Cookie中的SessionID后,是可以冒充原始用戶發(fā)起請(qǐng)求的。
這看上去是不合理的!
但是,Cookie和Session的機(jī)制如此。我們說(shuō)Cookie禁用后Session可能不能正常使用,但是我們可以將SessionID以GET方式傳遞給服務(wù)器端,所以SessionID如果明文傳輸就存在安全隱患。
拿到了淘寶的Cookie是無(wú)法冒充用戶的
正因?yàn)镃ookie是存儲(chǔ)在客戶端且不安全的,所以我們將用戶數(shù)據(jù)存儲(chǔ)在Cookie中時(shí)都會(huì)對(duì)數(shù)據(jù)進(jìn)行加密。比如會(huì)驗(yàn)證用戶的IP、終端特征標(biāo)識(shí)等。即使其他用戶偽造了Cookie依舊是無(wú)法驗(yàn)證通過(guò)的。
在一個(gè)java類如何通過(guò)session獲取已經(jīng)登錄的用戶名?
你好:
關(guān)于session獲取登錄名:
HttpSession session = ServletActionContext.getRequest().getSession()
String userId = session.getAttribute("userId")
//然后利用這個(gè)userId去查找數(shù)據(jù)庫(kù)
//加入session的方法
getHttpServletRequest().setAttribute(key, value)
久可以獲取你需要對(duì)應(yīng)的KEY值了