欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
如何做一個(gè)安全的“記住我”功能

  有這樣一個(gè)場(chǎng)景——有個(gè)用戶(hù)初訪(fǎng)并登錄了你的網(wǎng)站,然而第二天他又來(lái)了,卻必須再次登錄。于是就有了“記住我”這樣的功能來(lái)方便用戶(hù)使用,然而有一件不言自明的事情,那就是這種認證狀態(tài)的”曠日持久“早已超出了用戶(hù)原本所需要的使用范圍。這意味著(zhù),他們可以關(guān)閉瀏覽器,然后再關(guān)閉電腦,下周或者下個(gè)月,乃至更久以后再回來(lái),只要這間隔時(shí)間不要太離譜,該網(wǎng)站總會(huì )知道誰(shuí)是誰(shuí),并一如既往的為他們提供所有相同的功能和服務(wù)——與許久前他們離開(kāi)的時(shí)候別無(wú)二致。

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

  看上去是不是很巧很好用?那是當然,但你也將看到,即便使用得當,它能引發(fā)的那一茶幾悲劇也絕非偶然,少說(shuō)能有一車(chē)皮的人準備告訴你它是如何把事情搞糟的。那就讓我們從問(wèn)題的根源出發(fā)吧。 

  反模式

  這事情乍一看似乎很明顯,就是說(shuō)“記住我”功能的應用其實(shí)是非?;镜?,不是那種很玄乎的東西,可事實(shí)上呢?顯然不是。

  下面我會(huì )講解兩個(gè)反模式案例和問(wèn)題的所在,以及談?wù)撊绾巫鍪钦_的。第一個(gè)例子,如圖所示,當你登錄的時(shí)候:

  這一切都非常符合標準,但有趣的事情發(fā)生在登錄之后,讓我們來(lái)看看cookies:

  這個(gè)cookie相當的給力吧,尤其是被選中的黃色高亮部分。如果你沒(méi)勾選“記住我”的話(huà),這些要命的信息是不會(huì )被cookie記錄的,所以那個(gè)功能原本也只是單純?yōu)榱朔奖阌脩?hù)再訪(fǎng)的。在圖中,我的郵箱地址是赤裸裸的,但密碼并非明文。然而不要高興得太早,對著(zhù)那串似乎堅不可摧的加密字符定睛一看……咦?等一下,這不是Base64編碼嗎!關(guān)于Base64編碼,這是一種可以被完整解碼的編碼,這意味著(zhù)你可以隨便去哪個(gè)編碼轉換網(wǎng)站比如base64decode.org來(lái)做下面這件事:

  并不是所有人都把Base64當做“加密”(當然,有的人真會(huì )用它來(lái)加密重要信息),雖說(shuō)它確實(shí)是一種合理代替ASCII的方法,但事實(shí)上這種編碼的密碼僅僅在剛一進(jìn)入瀏覽器后就會(huì )立即轉變?yōu)槊魑?。你可能?huì )質(zhì)疑道 - 這能有多大問(wèn)題?無(wú)論如何它只是存儲在自己的瀏覽器里,它能怎樣?那到底黑客能不能得到它呢?

  下面我會(huì )介紹兩個(gè)非常簡(jiǎn)單的方法,首先提及的內容會(huì )和上面說(shuō)的那種情況有關(guān)。Black&Decker暴露了ELMAH日志,在這些日志中存在著(zhù)完全未經(jīng)配置的內部服務(wù)器錯誤,而被排除的內容是被記錄的內容的幾萬(wàn)倍??墒钱擡LMAH記錄了一個(gè)異常,在執行處理之前系統也會(huì )記錄所有的請求頭,這意味著(zhù)這些內容全都進(jìn)入了cookies。試想那數量龐大的被過(guò)濾掉的內容其實(shí)全被轉存了起來(lái),這簡(jiǎn)直就等于有了一個(gè)用戶(hù)憑據的數據庫。當然他們應該已經(jīng)修補了這個(gè)問(wèn)題,但它是一個(gè)很好的例子,如何輕而易舉的利用一個(gè)非常簡(jiǎn)單的配置失誤。
  接下來(lái)是另一個(gè)問(wèn)題:

  這個(gè)網(wǎng)站是Aussie Farmers Direct(以下統稱(chēng)為AFD網(wǎng)),是一個(gè)相當典型的表單登陸。那就登錄看看,并且讓網(wǎng)站“記住我”,接著(zhù)就來(lái)看cookies吧:

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

  XSS自己的JSON cookie?當然可以這么玩,這樣一來(lái),如果你的密碼改了但cookie還不變,等你再次登錄的時(shí)候,它就試圖用舊密碼登錄。嗯?

  AFD網(wǎng)并沒(méi)有暴露他們的ELMAH日志(PHP好樣的!)但他們還有其他風(fēng)險,如XSS。有關(guān)上述網(wǎng)站的另一件事是,這些存儲在Cookie中的密碼并沒(méi)有被標記成HttpOnly,你可以在右邊的cookie列表中看到。這意味著(zhù),客戶(hù)端腳本可以訪(fǎng)問(wèn)這些cookies,這就等于是只要你能讓XSS成功,就可以通過(guò)讓其他用戶(hù)加載XSS payload,竊取包含密碼的cookie,(這樣做的有效方法很多)。缺少了HttpOnly屬性或許是一時(shí)馬虎,但問(wèn)題的核心在于存儲在cookie中的密碼會(huì )很容易地通過(guò)其他途徑疏漏出去。

  還有一個(gè)更根本的原因,為什么這些網(wǎng)站會(huì )同時(shí)在這點(diǎn)上疏忽大意,盡管他們都在保護自己客戶(hù)在其網(wǎng)站上使用的憑據。每當上述網(wǎng)站的客戶(hù)勾選了“記住我”功能并向網(wǎng)站上發(fā)出請求時(shí),當他們的用戶(hù)名和密碼被網(wǎng)站發(fā)送到他們的郵箱時(shí),當他們操作eBay或網(wǎng)銀時(shí)。要么密碼是明文,要么可以通過(guò)客戶(hù)端腳本獲取,總之密碼總會(huì )一絲不掛的躺在瀏覽器里。大量的人有密碼復用(通用)的習慣 ,然而為那些熱愛(ài)作死的用戶(hù)承擔責任的,卻是我們開(kāi)發(fā)者。我不得不說(shuō),當我們應對那些用戶(hù)憑據威脅的時(shí)候,需要實(shí)施的保護措施要遠遠超過(guò)網(wǎng)站本身。   因此,應該意識到對于如何建立“記住我”功能上的真正誤解,下面我們再來(lái)看看良性實(shí)踐。

  樣本基于實(shí)操 

  實(shí)例   在安全界混,有句話(huà)你應該會(huì )很熟悉,“不用你自己試 - 就用那個(gè)公認最給力的就行”。這類(lèi)話(huà)在加密和認證計劃中非常容易聽(tīng)到,亦可應用在本文課題,借鑒過(guò)來(lái)深入研究細節。
  在一個(gè)用Visual Studio 2012建設的ASP.NET MVC 4網(wǎng)站中,你會(huì )看到這個(gè):

  其他框架有其他的標準模式來(lái)實(shí)現此功能,但這個(gè)更容易作為參考。當我們通過(guò)提交上面的表單進(jìn)行登錄時(shí),并且不要求“記住我”,以下的cookie被成功驗證,結果返回:

  Set-Cookie:.ASPXAUTH=6891A5EAF17A9C35B51C4ED3C473FBA294187C97B758880F9A56E3D335E2F020B86A85E1D0074BDAB2E1C9DBE590AF67895C0F989BA137E292035A3093A702DEC9D0D8089E1D007089F75A77D1B2A79CAA800E8F62D3D807CBB86779DB52F012; path=/; HttpOnly 

  這是一個(gè)簡(jiǎn)單的身份驗證cookie,并捆綁了所有HTTP的數據。這種我專(zhuān)屬的cookie被發(fā)送后,網(wǎng)站就每次都能知道這是我而且我已經(jīng)被驗證了。我們還能看得更清楚,比如當我們用Chrome’s Cookies collection的時(shí)候:

  另外,第二個(gè)cookie是一個(gè)防偽標記,以防止CSRF攻擊,并且與我們的認證狀態(tài)無(wú)關(guān)。除此之外,有沒(méi)有其他的cookie。

  現在,讓我們勾選上“記住我”然后再次登錄看看cookie的響應:

  Set-Cookie:.ASPXAUTH=3A92DAC7EFF4EE5B2027A13DD8ABEA8254F0A16D8059FCAF60F5533F1B7D99462DDF57320D069A493481978750526DF952D5C9EA0371C84F5CF1BFC0CCA024C2052824D4BA09670A42B85AEC7FFCB4088FC744C6C0A22749F07AF6E65E674A4A; expires=Tue, 02-Jul-2013 00:27:05 GMT; path=/; HttpOnly
  來(lái)了你看到?jīng)]?來(lái)用Chrome解剖一下看看:

  我們現在有了一個(gè)有效期為48小時(shí)的cookie,如果當它過(guò)了期限,它在瀏覽器關(guān)閉時(shí),將被丟棄。讓我們來(lái)仔細看看。   尋找身份驗證Cookie的時(shí)限部分

  其實(shí),這是一個(gè)簡(jiǎn)單得略顯荒謬的安全構造,我都甚至認為它沒(méi)有寫(xiě)出來(lái)的價(jià)值,來(lái)看一下這里:在這個(gè)例子中,“記住我”功能可以簡(jiǎn)單地歸結為,它控制了cookie的時(shí)限并且決定某個(gè)人能夠持續登錄多久。

  在上面的例子中,ASP.NET默認使用一個(gè)會(huì )話(huà)cookie,或者換句話(huà)說(shuō),一個(gè)cookie,而且沒(méi)有一個(gè)明確的截止日期,因此將在瀏覽器關(guān)閉時(shí)強行過(guò)期。這是一種方法,另一種是直接置入短保質(zhì)期,即使瀏覽器繼續使用該cookie,用戶(hù)也將被自動(dòng)注銷(xiāo)。當然,你也可以在服務(wù)器上控制這種行為,你也可以讓身份驗證cookie的時(shí)限不斷延長(cháng),如果系統正在積極使用由服務(wù)器響應增加的時(shí)限。

  只要保持這個(gè)驗證cookie有效,特定的人就會(huì )被記住。那多久的時(shí)效才合適呢?上面的例子中默認為2天,但這對于合法的使用者顯然有些過(guò)短。而Facebook的cookie卻能持續一年。持續時(shí)間較短,意味著(zhù)更少的風(fēng)險,但更多的不便,持續時(shí)間較長(cháng),使得它更容易為用戶(hù)增加潛在的風(fēng)險。讓我們更進(jìn)一步的看看這個(gè)風(fēng)險。

  長(cháng)期認證狀態(tài)的利用

  當在被認證之前,你的會(huì )話(huà)無(wú)法被劫持。廢話(huà),這是當然的!但認真看的話(huà),像在上面AFD網(wǎng)的那種情況下,該cookie將在6個(gè)月后到期,與此同時(shí)它沒(méi)有HTTP only的標記,這樣一來(lái)他們網(wǎng)站的XSS漏洞可以為攻擊者提供半年的時(shí)間去獲取并使用用戶(hù)的憑證。同樣的情況,如果時(shí)限為1個(gè)月,他們仍會(huì )有一些嚴重的漏洞,但上述攻擊的機會(huì )實(shí)實(shí)在在地得到了削減。

  另一方面,Black&Decker網(wǎng)有一個(gè)相對短的——一周的期限。在他們暴露著(zhù)ELMAH日志的情況下,依然有一系列的重大疏漏,但除非有人在一周前已經(jīng)用“記住我”登錄了網(wǎng)站,并且觸發(fā)了那個(gè)默認配置的漏洞,否則憑據不會(huì )被泄露。如果你想找個(gè)網(wǎng)站自己試試看的話(huà),就算是一個(gè)你已經(jīng)登錄過(guò)的網(wǎng)站,也可以看到存在時(shí)限風(fēng)險的cookie。

  所以說(shuō)一切有關(guān)身份驗證的cookie如果想要保護好用戶(hù)憑據的話(huà),HttpOnly的安全屬性是和嚴謹的安全態(tài)度必須的。雖然所有經(jīng)典的劫持威脅仍然存在,不過(guò),解決這些cookie上的問(wèn)題也是絕不容忽視的。

  歸根結底,這是一個(gè)權衡,需要考慮的因素如攻擊者要取得的數據的價(jià)值,在加強驗證安全性時(shí)對于用戶(hù)使用的便捷性和網(wǎng)站安全配置所造成的負面影響。例如,Facebook中存在著(zhù)一些非常有用的社會(huì )性的用戶(hù)數據,而用戶(hù)又非常希望無(wú)延時(shí)般的響應速度,在此之上他們還對自己的賬戶(hù)安全上進(jìn)行了大筆的投資。而對于A(yíng)FD網(wǎng),在持有用戶(hù)個(gè)人身份數據以及財務(wù)信息的同時(shí),提供了用戶(hù)所要求的安全驗證服務(wù),能看出用戶(hù)本身也是有相關(guān)安全意識的。他們有著(zhù)迥然不同的風(fēng)險,這兩個(gè)網(wǎng)站對于身份驗證cookie的時(shí)限策略應該是完全不同的。
  強化

  或許有些同學(xué)會(huì )覺(jué)得AUTH cookie很無(wú)解,有關(guān)安全性的東西總會(huì )有一種更好的解決方案,但這是有代價(jià)的,安全性取決于你愿意付出的的時(shí)間、金錢(qián)、便利性,而且也總會(huì )有人告訴你,你做錯了!讓我們來(lái)看看關(guān)于使用AUTH cookie時(shí)限的一些可能的加強方法。

  對于一個(gè)長(cháng)期有效的AUTH cookie,問(wèn)題在于他們需要有效地保持用戶(hù)身份的驗證和面對如CSRF或clickjacking等攻擊風(fēng)險。當然,還有很多需要利用長(cháng)期cookie的風(fēng)險并沒(méi)有列出,但這并不影響圍繞防范方法的討論。還有一點(diǎn)就是當一個(gè)專(zhuān)用cookie為用戶(hù)在服務(wù)器上提供過(guò)有效認證之后,在返回時(shí)它還可以重新開(kāi)啟另一個(gè)認證會(huì )話(huà)。雖然最初的會(huì )話(huà)會(huì )迅速到期,但關(guān)鍵是重啟的新會(huì )話(huà),它會(huì )因為用戶(hù)勾選了“記住我”并再次登錄而進(jìn)行另外的驗證。

  一種驗證方式包括利用用戶(hù)的IP地址/用戶(hù)代理/其他顯著(zhù)特點(diǎn)來(lái)限制“記住我”的cookie。這能提供一些對cookie劫持的防御。當然,要在合法使用的情況下進(jìn)行這些變更。特別是在移動(dòng)網(wǎng)絡(luò )中這類(lèi)的情況并不少見(jiàn)——用不同的IP回訪(fǎng)一個(gè)網(wǎng)站。你的ISP不一定總會(huì )提供靜態(tài)的IP地址。至于用戶(hù)代理,還有瀏覽器差異,如Chrome和Firefox的更新簡(jiǎn)直恍如隔日。然而除非你刻意去挑選某些優(yōu)質(zhì)的代理,否則使用代理將是一個(gè)危險的做法。

  還有一種程序化的手段,就是保持“記住我”cookie和身份驗證cookie的分離,并使用前者重新驗證用戶(hù)的身份,但要額外施加一些限制。實(shí)際情況是,某個(gè)身份的自動(dòng)認證狀態(tài)的過(guò)程,一定會(huì )遵循安全模型。緩和措施的結果就是,它會(huì )在自動(dòng)重新驗證之前,向用戶(hù)再次索要憑據。這并非創(chuàng )新之舉,你或許會(huì )在進(jìn)行例如網(wǎng)銀匯款時(shí)遇到過(guò)此類(lèi)功能。在這里,我們說(shuō)身份驗證的用戶(hù)面臨的風(fēng)險很大,因為這種方式很容易被劫持和欺騙。

  至于其他加強方法,我們可以在“記住我”cookie被使用后進(jìn)行復位。這也等于讓它在服務(wù)器端無(wú)效,而需要一個(gè)獨特且持久的cookie值,例如存在于數據庫和cookie間的一個(gè)隨機數。這樣有利于確保cookie不會(huì )被攻擊者用下面的方式獲得。在這里的文章中,作者談?wù)摿艘恍╆P(guān)于這類(lèi)模式的緩解方法。但你需要付出一些額外的工作,并在某種程度上給正常的用戶(hù)帶來(lái)不便(例如用戶(hù)無(wú)法跨越多個(gè)電腦使用并“記住”自己的憑據)。

  最后一件值得提一句的是,同一帳戶(hù)下的管理原則,它需要我們去關(guān)注并且和“記住我”功能有關(guān)。例如,允許單一用戶(hù)的多個(gè)會(huì )話(huà)同時(shí)驗證?或者用戶(hù)一旦更改了密碼要不要將會(huì )話(huà)斷開(kāi)?管理員可不可以結束驗證會(huì )話(huà)?出現了各種各樣的問(wèn)題,不過(guò)這里要討論的僅僅是關(guān)于如何復原。

  什么時(shí)候不該用“記住我”功能?(以及一些替代功能)

  有時(shí)候,允許一個(gè)經(jīng)過(guò)認證的用戶(hù)保持認證狀態(tài)很長(cháng)一段時(shí)間是毫無(wú)意義的。例如銀行,在常規的使用情況下,當你想圖省事非要進(jìn)行自動(dòng)登錄時(shí),在你走人以后留在那里的是一個(gè)未登出的瀏覽器,風(fēng)險多大不用我說(shuō)了吧。

  但其實(shí)還是有一些中間地帶可以采取下面這種做法:

  這個(gè)登陸框并不是看上去的那么弱,當你用“記住我”登錄過(guò)后,再次回訪(fǎng)的時(shí)候,網(wǎng)站的會(huì )話(huà)就過(guò)期了,你會(huì )看到:

  用戶(hù)名這個(gè)樣子可不是我起的,是因為它連同其他一些數據在cookie中存了三個(gè)月。坦白地說(shuō),這么做沒(méi)有意義,因為記住用戶(hù)名不難啊!

  但是,這種情況既不能全否也不能全部肯定,這是個(gè)灰色的中間地帶。例如,假設在通過(guò)“記住我”功能恢復會(huì )話(huà)時(shí),重新認證是在主進(jìn)程之前啟動(dòng)的。這或許是一個(gè)兩全齊美的做法。

  總結

  這個(gè)也不例外,總會(huì )有些功能看上去似乎是一個(gè)好主意,而且它通常是很容易做好的,至少可以適合大多數的項目。坦率來(lái)講,前面兩個(gè)例子仍然莫名其妙的讓人頭疼,特別是當你考慮到它本來(lái)只是用于延長(cháng)cookie時(shí)限的。
  另外,這篇文章的重點(diǎn)并不局限于分解“記住我”功能的安全結構,你可能能夠自行解決自己的cookie憑據問(wèn)題,但結合起ELMAH和缺少HTTP only屬性以及XSS漏洞的情況考慮,時(shí)刻警惕一個(gè)不經(jīng)意的行為,(行為)雖然看似無(wú)害但卻很可能造成一個(gè)嚴重的安全風(fēng)險。

  原文出處: Troy Hunt 譯文出處: IDF

    本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
    打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
    猜你喜歡
    類(lèi)似文章
    什么是 cookie 的 httponly 屬性
    【網(wǎng)絡(luò )知識補習】??| 由淺入深了解HTTP(四) HTTP之cookies
    Web認證_介紹Web開(kāi)發(fā)中幾種常用的認證機制
    進(jìn)攻asp.net - 基于窗體的身份驗證 - V6bbs
    【Burp系列】身份認證漏洞靶場(chǎng)實(shí)驗整合(建議收藏)
    Cookie和Token
    更多類(lèi)似文章 >>
    生活服務(wù)
    分享 收藏 導長(cháng)圖 關(guān)注 下載文章
    綁定賬號成功
    后續可登錄賬號暢享VIP特權!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服

    欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久