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