国产精品香蕉在线观看网,亚洲欧美精品综合在线观看,亚洲不卡av一区二区无码不卡,亚洲日本精品国产第一区二区

移動(dòng)安全 安全管理 應(yīng)用案例 網(wǎng)絡(luò)威脅 系統(tǒng)安全應(yīng)用安全 數(shù)據(jù)安全 云安全
當(dāng)前位置: 主頁(yè) > 信息安全 > 應(yīng)用安全 >

若何成立一個(gè)安然的“記住我”功能

時(shí)間:2013-08-28 12:01來(lái)源:TuZhiJiaMi企業(yè)信息安全專家 點(diǎn)擊:
有如許一個(gè)場(chǎng)景——有個(gè)用戶初訪并登錄了你的網(wǎng)站,但是第二天他又來(lái)了,卻必需再次登錄。因而就有了“記住我”如許的功能來(lái)便操縱戶利用,但是有一件不言自明的工作,那就是這類(lèi)認(rèn)
Tags應(yīng)用安全(1006)客戶端(11)Cookies(3)  

  有如許一個(gè)場(chǎng)景——有個(gè)用戶初訪并登錄了你的網(wǎng)站,但是第二天他又來(lái)了,卻必需再次登錄。因而就有了“記住我”如許的功能來(lái)便操縱戶利用,但是有一件不言自明的工作,那就是這類(lèi)認(rèn)證狀況的”空費(fèi)光陰“早已超出了用戶本來(lái)所需要的利用范圍。這意味著,他們可以封鎖瀏覽器,然后再封鎖電腦,下周或下個(gè)月,乃至更久今后再回來(lái),只要這距離時(shí)候不要太離譜,該網(wǎng)站總會(huì)知道誰(shuí)是誰(shuí),并一如既往的為他們供給所有不異的功能和辦事——與好久前他們分開(kāi)的時(shí)辰別無(wú)二致。

  我在談?wù)摰木褪沁@個(gè)“小家伙”:

  看上往是不是是很巧很好用?那是當(dāng)然,但你也將看到,即便利用恰當(dāng),它能激發(fā)的那一茶幾悲劇也盡非偶爾,少說(shuō)能有一車(chē)皮的人預(yù)備奉告你它是若何把工作弄糟的。那就讓我們從標(biāo)題問(wèn)題標(biāo)本源解纜吧。

  反模式

  這工作乍一看仿佛很較著,就是說(shuō)“記住我”功能的利用其實(shí)是很是根基的,不是那種很玄乎的東西,可事實(shí)上呢?明顯不是。

  下面我會(huì)講授兩個(gè)反模式案例和標(biāo)題問(wèn)題標(biāo)地點(diǎn),和談?wù)撊艉巫鍪菧?zhǔn)確的。第一個(gè)例子,如圖所示,當(dāng)你登錄的時(shí)辰:

圖片2

  這一切都很是合適尺度,但有趣的工作產(chǎn)生在登錄以后,讓我們來(lái)看看cookies:

圖片3

  這個(gè)cookie相當(dāng)?shù)慕o力吧,特別是被選中的黃色高亮部門(mén)。假定你沒(méi)勾選“記住我”的話,這些要命的信息是不會(huì)被cookie記實(shí)的,所以阿誰(shuí)功能本來(lái)也只是純真為了便操縱戶再訪的。在圖中,我的郵箱地址是赤******的,但暗碼并不是明文。但是不要興奮得太早,對(duì)著那串仿佛堅(jiān)不成摧的加密字符定睛一看……咦?等一下,這不是Base64編碼嗎!關(guān)于Base64編碼,這是一種可以被完全解碼的編碼,這意味著你可以隨便往哪個(gè)編碼轉(zhuǎn)換網(wǎng)站好比base64decode.org來(lái)做下面這件事:

圖片4

  其實(shí)不是所有人都把Base64當(dāng)作“加密”(當(dāng)然,有的人真會(huì)用它來(lái)加密首要信息),雖然說(shuō)它確切是一種合理代替ASCII的編制,但事實(shí)上這類(lèi)編碼的暗碼僅僅在剛一進(jìn)進(jìn)瀏覽器后就會(huì)當(dāng)即改變成明文。你可能會(huì)質(zhì)疑道 - 這能有多大年夜標(biāo)題問(wèn)題?不管若何它只是存儲(chǔ)在本身的瀏覽器里,它能如何?那到底黑客能不克不及獲得它呢?

  下面我會(huì)介紹兩個(gè)很是簡(jiǎn)單的編制,起首說(shuō)起的內(nèi)容會(huì)和上面說(shuō)的那種環(huán)境有關(guān)。Black&Decker透露了ELMAH日記,在這些日記中存在著完全未經(jīng)建設(shè)的內(nèi)部辦事器弊端,而被解除的內(nèi)容是被記實(shí)的內(nèi)容的幾萬(wàn)倍。可是當(dāng)ELMAH記實(shí)了一個(gè)異常,在履行措置之前系統(tǒng)也會(huì)記實(shí)所有的要求頭,這意味著這些內(nèi)容全都進(jìn)進(jìn)了cookies。試想那數(shù)量復(fù)雜年夜的被過(guò)濾掉落的內(nèi)容其實(shí)全被轉(zhuǎn)存了起來(lái),這的確就便是有了一個(gè)用戶根據(jù)的數(shù)據(jù)庫(kù)。當(dāng)然他們應(yīng)當(dāng)已修補(bǔ)了這個(gè)標(biāo)題問(wèn)題,但它是一個(gè)很好的例子,若何垂手可得的操縱一個(gè)很是簡(jiǎn)單的建設(shè)掉誤。

  接下來(lái)是另外一個(gè)標(biāo)題問(wèn)題:

圖片5

  這個(gè)網(wǎng)站是Aussie Farmers Direct(以下統(tǒng)稱為AFD網(wǎng)),是一個(gè)相當(dāng)?shù)湫偷谋韱蔚前丁D蔷偷卿浛纯?,并且讓網(wǎng)站“記住我”,接著就來(lái)看cookies吧:

  好家伙,仍是一樣的狀況,乃至連Base64編碼都沒(méi)加。要說(shuō)這一點(diǎn)有多糟,來(lái)看你可以做這個(gè):

  XSS本身的JSON cookie?當(dāng)然可以這么玩,如許一來(lái),假定你的暗碼改了但cookie還不變,等你再次登錄的時(shí)辰,它就試圖用舊暗碼登錄。嗯?

  AFD網(wǎng)并沒(méi)有透露他們的ELMAH日記(PHP好樣的!)但他們還有其他風(fēng)險(xiǎn),如XSS。有關(guān)上述網(wǎng)站的另外一件事是,這些存儲(chǔ)在Cookie中的暗碼并沒(méi)有被標(biāo)識(shí)表記標(biāo)幟成HttpOnly,你可以在右邊的cookie列表中看到。這意味著,客戶端腳本可以拜候這些cookies,這就便是是只要你能讓XSS成功,便可以經(jīng)由過(guò)程讓其他用戶加載XSS payload,盜取包含暗碼的cookie,(如許做的有效編制良多)。貧乏了HttpOnly屬性或許是一時(shí)草率,但標(biāo)題問(wèn)題標(biāo)核心在于存儲(chǔ)在cookie中的暗碼會(huì)很等閑地經(jīng)由過(guò)程其他路子疏漏出往。

  還有一個(gè)更底子的啟事,為甚么這些網(wǎng)站會(huì)同時(shí)在這點(diǎn)上忽視大年夜意,雖然他們都在呵護(hù)本身客戶在其網(wǎng)站上利用的根據(jù)。每當(dāng)上述網(wǎng)站的客戶勾選了“記住我”功能并向網(wǎng)站上發(fā)出要求時(shí),當(dāng)他們的用戶名和暗碼被網(wǎng)站發(fā)送到他們的郵箱時(shí),當(dāng)他們把持eBay或網(wǎng)銀時(shí)。要么暗碼是明文,要么可以經(jīng)由過(guò)程客戶端腳本獲得,總之暗碼總會(huì)一絲不掛的躺在瀏覽器里。大年夜量的人有暗碼復(fù)用(通用)的習(xí)慣 ,但是為那些酷愛(ài)作死的用戶承擔(dān)責(zé)任的,倒是我們開(kāi)辟者。我不克不及不說(shuō),當(dāng)我們應(yīng)對(duì)那些用戶根據(jù)威脅的時(shí)辰,需要實(shí)施的呵護(hù)辦法要遠(yuǎn)遠(yuǎn)超越網(wǎng)站本身。

  是以,應(yīng)當(dāng)意想到對(duì)若何成立“記住我”功能上的真正曲解,下面我們?cè)賮?lái)看看良性實(shí)踐。

  樣本基于實(shí)操

  實(shí)例

  在安然界混,有句話你應(yīng)當(dāng)會(huì)很熟諳,“不消你本身試 - 就用阿誰(shuí)公認(rèn)最給力的就行”。這類(lèi)話在加密和認(rèn)證打算中很是等閑聽(tīng)到,亦可利用在本文課題,借鑒過(guò)來(lái)深進(jìn)研究細(xì)節(jié)。

  在一個(gè)用Visual Studio 2012扶植的ASP.NET MVC 4網(wǎng)站中,你會(huì)看到這個(gè):

圖片8

  其他框架有其他的尺度模式來(lái)實(shí)現(xiàn)此功能,但這個(gè)更等閑作為參考。當(dāng)我們經(jīng)由過(guò)程提交上面的表單進(jìn)行登錄時(shí),并且不要求“記住我”,以下的cookie被成功驗(yàn)證,成果返回:

  Set-Cookie:.ASPXAUTH=6891A5EAF17A9C35B51C4ED3C473FBA29418

  7C97B758880F9A56E3D335E2F020B86A85E1D0074BDAB2E1C9DBE590A

  F67895C0F989BA137E292035A3093A702DEC9D0D8089E1D007089F75

  77D1B2A79CAA800E8F62D3D807CBB86779DB52F012; path=/; HttpOnly

  這是一個(gè)簡(jiǎn)單的身份驗(yàn)證cookie,并***了所有HTTP的數(shù)據(jù)。這類(lèi)我專屬的cookie被發(fā)送后,網(wǎng)站就每次都能知道這是我并且我已被驗(yàn)證了。我們還能看得更清晰,好比當(dāng)我們用Chrome’s Cookies collection的時(shí)辰:

  別的,第二個(gè)cookie是一個(gè)防偽標(biāo)識(shí)表記標(biāo)幟,以避免CSRF報(bào)復(fù)打擊,并且與我們的認(rèn)證狀況無(wú)關(guān)。除此以外,有沒(méi)有其他的cookie。

  此刻,讓我們勾選上“記住我”然后再次登錄看看cookie的響應(yīng):

  Set-Cookie:.ASPXAUTH=3A92DAC7EFF4EE5B2027A13DD8ABEA8254

  F0A16D8059FCAF60F5533F1B7D99462DDF57320D069A49348197875

  0526DF952D5C9EA0371C84F5CF1BFC0CCA024C2052824D4BA09670A

  42B85AEC7FFCB4088FC744C6C0A22749F07AF6E65E674A4A;

  expires=Tue, 02-Jul-2013 00:27:05 GMT; path=/; HttpOnly

  來(lái)了你看到?jīng)]?來(lái)用Chrome解剖一下看看:

  我們此刻有了一個(gè)有效期為48小時(shí)的cookie,假定當(dāng)它過(guò)了刻日,它在瀏覽器封鎖時(shí),將被丟棄。讓我們來(lái)細(xì)心看看。

  尋覓身份驗(yàn)證Cookie的時(shí)限部門(mén)

  其實(shí),這是一個(gè)簡(jiǎn)單得略顯荒誕的安然機(jī)關(guān),我都乃至覺(jué)得它沒(méi)有寫(xiě)出來(lái)的價(jià)值,來(lái)看一下這里:在這個(gè)例子中,“記住我”功能可以簡(jiǎn)單地回結(jié)為,它節(jié)制了cookie的時(shí)限并且決定某小我可以或許延續(xù)登錄多久。

  在上面的例子中,ASP.NET默許利用一個(gè)會(huì)話cookie,或換句話說(shuō),一個(gè)cookie,并且沒(méi)有一個(gè)明白的截止日期,是以將在瀏覽器封鎖時(shí)強(qiáng)行過(guò)時(shí)。這是一種編制,另外一種是直接置進(jìn)短保質(zhì)期,即便瀏覽器繼續(xù)利用該cookie,用戶也將被主動(dòng)刊出。當(dāng)然,你也能夠在辦事器上節(jié)制這類(lèi)行動(dòng),你也可讓身份驗(yàn)證cookie的時(shí)限不竭耽誤,假定系統(tǒng)正在積極利用由辦事器響應(yīng)增加的時(shí)限。

  只要保持這個(gè)驗(yàn)證cookie有效,特定的人就會(huì)被記住。那多久的時(shí)效才合適呢?上面的例子中默覺(jué)得2天,但這對(duì)合法的利用者明顯有些太短。而Facebook的cookie卻能延續(xù)一年。延續(xù)時(shí)候較短,意味著更少的風(fēng)險(xiǎn),但更多的不便,延續(xù)時(shí)候較長(zhǎng),使得它更等閑為用戶增加暗藏的風(fēng)險(xiǎn)。讓我們更進(jìn)一步的看看這個(gè)風(fēng)險(xiǎn)。

  持久認(rèn)證狀況的操縱

  當(dāng)在被認(rèn)證之前,你的會(huì)話沒(méi)法被劫持。廢話,這是當(dāng)然的!但當(dāng)真看的話,像在上面AFD網(wǎng)的那種環(huán)境下,該cookie將在6個(gè)月后到期,與此同時(shí)它沒(méi)有HTTP only的標(biāo)識(shí)表記標(biāo)幟,如許一來(lái)他們網(wǎng)站的XSS縫隙可覺(jué)得報(bào)復(fù)打擊者供給半年的時(shí)候往獲得并利用用戶的憑證。一樣的環(huán)境,假定時(shí)限為1個(gè)月,他們?nèi)詴?huì)有一些嚴(yán)重的縫隙,但上述報(bào)復(fù)打擊的機(jī)緣實(shí)其實(shí)在地獲得了削減。

  另外一方面,Black&Decker網(wǎng)有一個(gè)相對(duì)短的——一周的刻日。在他們透露著ELMAH日記的環(huán)境下,仍然有一系列的重大年夜疏漏,但除非有人在一周前已用“記住我”登錄了網(wǎng)站,并且觸發(fā)了阿誰(shuí)默許建設(shè)的縫隙,不然根據(jù)不會(huì)被泄漏。假定你想找個(gè)網(wǎng)站本身嘗嘗看的話,就算是一個(gè)你已登錄過(guò)的網(wǎng)站,也能夠看到存在時(shí)限風(fēng)險(xiǎn)的cookie。

  所以說(shuō)一切有關(guān)身份驗(yàn)證的cookie假定想要呵護(hù)好用戶根據(jù)的話,HttpOnly的安然屬性是和嚴(yán)謹(jǐn)?shù)陌踩涣?chǎng)必需的。當(dāng)然所有經(jīng)典的劫持威脅仍然存在,不外,解決這些cookie上的標(biāo)題問(wèn)題也是盡不容忽視的。

  回根結(jié)底,這是一個(gè)衡量,需要考慮的身分如報(bào)復(fù)打擊者要獲得的數(shù)據(jù)的價(jià)值,在加強(qiáng)驗(yàn)證安然性時(shí)對(duì)用戶利用的便捷性和網(wǎng)站安然建設(shè)所釀成的負(fù)面影響。例如,F(xiàn)acebook中存在著一些很是有效的社會(huì)性的用戶數(shù)據(jù),而用戶又很是??礋o(wú)延時(shí)般的響應(yīng)速度,在此之上他們還對(duì)本身的賬戶安然長(zhǎng)進(jìn)行了大年夜筆的投資。而對(duì)AFD網(wǎng),在持有效戶小我身份數(shù)據(jù)和財(cái)務(wù)信息的同時(shí),供給了用戶所要求的安然驗(yàn)證辦事,能看出用戶本身也是有相干安然意識(shí)的。他們有著迥然不合的風(fēng)險(xiǎn),這兩個(gè)網(wǎng)站對(duì)身份驗(yàn)證cookie的時(shí)限策略應(yīng)當(dāng)是完全不合的。

  強(qiáng)化

  或許有些同窗會(huì)感覺(jué)AUTH cookie很無(wú)解,有關(guān)安然性的東西總會(huì)有一種更好的解決方案,但這是有代價(jià)的,安然性取決于你愿意支出的的時(shí)候、金錢(qián)、便當(dāng)性,并且也總會(huì)有人奉告你,你做錯(cuò)了!讓我們來(lái)看看關(guān)于利用AUTH cookie時(shí)限的一些可能的加強(qiáng)編制。

  對(duì)一個(gè)持久有效的AUTH cookie,標(biāo)題問(wèn)題在于他們需要有效地保持用戶身份的驗(yàn)證和面對(duì)如CSRF或clickjacking等報(bào)復(fù)打擊風(fēng)險(xiǎn)。當(dāng)然,還有良多需要操縱持久cookie的風(fēng)險(xiǎn)并沒(méi)有列出,但這其實(shí)不影響環(huán)繞防備編制的會(huì)商。還有一點(diǎn)就是當(dāng)一個(gè)專用cookie為用戶在辦事器上供給過(guò)有效認(rèn)證以后,在返回時(shí)它還可以從頭開(kāi)啟另外一個(gè)認(rèn)證會(huì)話。當(dāng)然最初的會(huì)話會(huì)敏捷到期,但關(guān)頭是重啟的新會(huì)話,它會(huì)因?yàn)橛脩艄催x了“記住我”并再次登錄而進(jìn)行別的的驗(yàn)證。

  一種驗(yàn)證編制包含操縱用戶的IP地址/用戶代辦署理/其他較著特點(diǎn)來(lái)限制“記住我”的cookie。這能供給一些對(duì)cookie劫持的防御。當(dāng)然,要在合法利用的環(huán)境下進(jìn)行這些變動(dòng)。出格是在移動(dòng)收集中這類(lèi)的環(huán)境其實(shí)良多見(jiàn)——用不合的IP回訪一個(gè)網(wǎng)站。你的ISP不必然總會(huì)供給靜態(tài)的IP地址。至于用戶代辦署理,還有瀏覽器差別,如Chrome和Firefox的更新的確仿佛隔日。但是除非你決心往遴選某些優(yōu)良的代辦署理,不然利用代辦署理將是一個(gè)危險(xiǎn)的做法。

  還有一種法度化的手段,就是保持“記住我”cookie和身份驗(yàn)證cookie的分手,并利用前者從頭驗(yàn)證用戶的身份,但要額外施加一些限制。實(shí)際環(huán)境是,某個(gè)身份的主動(dòng)認(rèn)證狀況的過(guò)程,必然會(huì)遵守安然模型。和緩辦法的成果就是,它會(huì)在主動(dòng)從頭驗(yàn)證之前,向用戶再次索要根據(jù)。這并不是立異之舉,你或許會(huì)在進(jìn)行例如網(wǎng)銀匯款時(shí)碰著過(guò)此類(lèi)功能。在這里,我們說(shuō)身份驗(yàn)證的用戶面對(duì)的風(fēng)險(xiǎn)很大年夜,因?yàn)檫@類(lèi)編制很等閑被劫持和棍騙。

  至于其他加強(qiáng)編制,我們可以在“記住我”cookie被利用掉隊(duì)行復(fù)位。這也便是讓它在辦事器端無(wú)效,而需要一個(gè)奇特且持久的cookie值,例如存在于數(shù)據(jù)庫(kù)和cookie間的一個(gè)隨機(jī)數(shù)。如許有益于確保cookie不會(huì)被報(bào)復(fù)打擊者用下面的編制獲得。在這里的文章中,作者談?wù)摿艘恍╆P(guān)于這類(lèi)模式的減緩編制。但你需要支出一些額外的工作,并在某種程度上給正常的用戶帶來(lái)不便(例如用戶沒(méi)法超越多個(gè)電腦利用并“記住”本身的根據(jù))。

  最后一件值得提一句的是,統(tǒng)一帳戶下的治理原則,它需要我們往存眷并且和“記住我”功能有關(guān)。例如,承諾單一用戶的多個(gè)會(huì)話同時(shí)驗(yàn)證?或用戶一旦更改了暗碼要不要將會(huì)話斷開(kāi)?治理員可不成以結(jié)束驗(yàn)證會(huì)話?呈現(xiàn)了各類(lèi)各樣的標(biāo)題問(wèn)題,不外這里要會(huì)商的僅僅是關(guān)于若何答復(fù)復(fù)興。

  甚么時(shí)辰不該用“記住我”功能?(和一些替代功能)

  有時(shí)辰,承諾一個(gè)顛末認(rèn)證的用戶保持認(rèn)證狀況很長(zhǎng)一段時(shí)候是毫無(wú)意義的。例如銀行,在常規(guī)的利用環(huán)境下,當(dāng)你想圖省事非要進(jìn)行主動(dòng)登錄時(shí),在你走人今后留在那邊的是一個(gè)未登出的瀏覽器,風(fēng)險(xiǎn)多大年夜不消我說(shuō)了吧。

  但其實(shí)仍是有一些中間地帶可以采納下面這類(lèi)做法:

圖片11

  這個(gè)登岸框其實(shí)不是看上往的那么弱,當(dāng)你用“記住我”登錄過(guò)后,再次回訪的時(shí)辰,網(wǎng)站的會(huì)話就過(guò)時(shí)了,你會(huì)看到:

圖片12

  用戶名這個(gè)模樣可不是我起的,是因?yàn)樗B同其他一些數(shù)據(jù)在cookie中存了三個(gè)月。率直地說(shuō),這么做沒(méi)成心義,因?yàn)橛涀∮脩裘浑y啊!

  可是,這類(lèi)環(huán)境既不克不及全否也不克不及全數(shù)必定,這是個(gè)灰色的中間地帶。例如,假定在經(jīng)由過(guò)程“記住我”功能恢復(fù)會(huì)話時(shí),從頭認(rèn)證是在主過(guò)程之前啟動(dòng)的。這或許是一個(gè)分身齊美的做法。

  總結(jié)

  這個(gè)也不例外,總會(huì)有些功能看上往仿佛是一個(gè)好主張,并且它凡是是很等閑做好的,起碼可以合適大年夜大都的項(xiàng)目。坦白來(lái)講,前面兩個(gè)例子仍然莫名其妙的讓人頭疼,出格是當(dāng)你考慮到它本來(lái)只是用于耽誤cookie時(shí)限的。

  別的,這篇文章的重點(diǎn)其實(shí)不局限于分化“記住我”功能的安然布局,你可能可以或許自行解決本身的cookie根據(jù)標(biāo)題問(wèn)題,但連絡(luò)起ELMAH和貧乏HTTP only屬性和XSS縫隙的環(huán)境考慮,時(shí)刻警戒一個(gè)不經(jīng)意的行動(dòng),(行動(dòng))當(dāng)然看似無(wú)害但卻很可能造成一個(gè)嚴(yán)重的安然風(fēng)險(xiǎn)。

------分隔線----------------------------

推薦內(nèi)容