Web應(yīng)用安全 三 失效的身份認(rèn)證和會話管理

失效的身份認(rèn)證和會話管理

與身份認(rèn)證和回話管理相關(guān)的應(yīng)用程序功能往往得不到正確的實現(xiàn),這就導(dǎo)致了攻擊者破壞密碼熙涤、密鑰舔哪、會話令牌或攻擊其他的漏洞去冒充其他用戶的身份(暫時或永久的)穴豫。

失效的身份認(rèn)證和會話管理

我存在會話劫持漏洞嗎?

如何能夠保護用戶憑證和會話ID等會話管理資產(chǎn)呢渤滞?以下情況可能產(chǎn)生漏洞:
1.用戶身份驗證憑證沒有使用哈希或加密保護因俐。
2.認(rèn)證憑證可猜測拇惋,或者能夠通過薄弱的的帳戶管理功能(例如賬戶創(chuàng)建、密碼修改抹剩、密碼恢復(fù), 弱會話ID)重寫撑帖。
3.會話ID暴露在URL里(例如, URL重寫)。
4.會話ID容易受到會話固定(session fixation)的攻擊澳眷。
5.會話ID沒有超時限制磷仰,或者用戶會話或身份驗證令牌特別是單點登錄令牌在用戶注銷時沒有失效。
6.成功注冊后,會話ID沒有輪轉(zhuǎn)境蔼。
7.密碼灶平、會話ID和其他認(rèn)證憑據(jù)使用未加密連接傳輸。

攻擊案例場景

  • 場景#1:機票預(yù)訂應(yīng)用程序支持URL重寫箍土,把會話ID放在URL里:
    http://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii
    該網(wǎng)站一個經(jīng)過認(rèn)證的用戶希望讓他朋友知道這個機票打折信息逢享。他將上面鏈接通過郵件發(fā)給他朋友們,并不知道自己已經(jīng)泄漏了自己的會話ID吴藻。當(dāng)他的朋友們使用上面的鏈接時瞒爬,他們將會使用他的會話和信用卡。
  • 場景#2:應(yīng)用程序超時設(shè)置不當(dāng)。用戶使用公共計算機訪問網(wǎng)站侧但。離開時矢空,該用戶沒有點擊退出,而是直接關(guān)閉瀏覽器禀横。攻擊者在一個小時后能使用相同瀏覽器通過身份認(rèn)證屁药。鹽
  • 場景#3:內(nèi)部或外部攻擊者進入系統(tǒng)的密碼數(shù)據(jù)庫。存儲在數(shù)據(jù)庫中的用戶密碼沒有被哈希和加鹽, 所有用戶的密碼都被攻擊者獲得柏锄。

如何防止?

1酿箭、區(qū)分公共區(qū)域和受限區(qū)域
  站點的公共區(qū)域允許任何用戶進行匿名訪問。受限區(qū)域只能接受特定用戶的訪問趾娃,而且用戶必須通過站點的身份驗證缭嫡。考慮一個典型的零售網(wǎng)站抬闷。您可以匿名瀏覽產(chǎn)品分類妇蛀。當(dāng)您向購物車中添加物品時,應(yīng)用程序?qū)⑹褂脮挊?biāo)識符驗證您的身份笤成。最后讥耗,當(dāng)您下訂單時,即可執(zhí)行安全的交易疹启。這需要您進行登錄,以便通過SSL 驗證交易蔼卡。
  將站點分割為公共訪問區(qū)域和受限訪問區(qū)域喊崖,可以在該站點的不同區(qū)域使用不同的身份驗證和授權(quán)規(guī)則,從而限制對 SSL 的使用雇逞。使用SSL 會導(dǎo)致性能下降荤懂,為了避免不必要的系統(tǒng)開銷,在設(shè)計站點時塘砸,應(yīng)該在要求驗證訪問的區(qū)域限制使用 SSL节仿。
2、對最終用戶帳戶使用帳戶鎖定策略
  當(dāng)最終用戶帳戶幾次登錄嘗試失敗后掉蔬,可以禁用該帳戶或?qū)⑹录懭肴罩纠认堋H绻褂?Windows 驗證(如 NTLM 或Kerberos協(xié)議),操作系統(tǒng)可以自動配置并應(yīng)用這些策略女轿。如果使用表單驗證箭启,則這些策略是應(yīng)用程序應(yīng)該完成的任務(wù),必須在設(shè)計階段將這些策略合并到應(yīng)用程序中蛉迹。
  請注意傅寡,帳戶鎖定策略不能用于抵制服務(wù)攻擊。例如,應(yīng)該使用自定義帳戶名替代已知的默認(rèn)服務(wù)帳戶(如IUSR_MACHINENAME)荐操,以防止獲得 Internet 信息服務(wù) (IIS) Web服務(wù)器名稱的攻擊者鎖定這一重要帳戶芜抒。
3、支持密碼有效期
  密碼不應(yīng)固定不變托启,而應(yīng)作為常規(guī)密碼維護的一部分宅倒,通過設(shè)置密碼有效期對密碼進行更改。在應(yīng)用程序設(shè)計階段驾中,應(yīng)該考慮提供這種類型的功能唉堪。
4、能夠禁用帳戶
  如果在系統(tǒng)受到威脅時使憑證失效或禁用帳戶肩民,則可以避免遭受進一步的攻擊唠亚。5、不要在用戶存儲中存儲密碼
  如果必須驗證密碼持痰,則沒有必要實際存儲密碼灶搜。相反,可以存儲一個單向哈希值工窍,然后使用用戶所提供的密碼重新計算哈希值割卖。為減少對用戶存儲的詞典攻擊威脅,可以使用強密碼患雏,并將隨機salt 值與該密碼結(jié)合使用鹏溯。
5、要求使用強密碼
  不要使攻擊者能輕松破解密碼淹仑。有很多可用的密碼編制指南丙挽,但通常的做法是要求輸入至少 8位字符,其中要包含大寫字母匀借、小寫字母颜阐、數(shù)字和特殊字符。無論是使用平臺實施密碼驗證還是開發(fā)自己的驗證策略吓肋,此步驟在對付粗暴攻擊時都是必需的凳怨。在粗暴攻擊中,攻擊者試圖通過系統(tǒng)的試錯法來破解密碼是鬼。使用常規(guī)表達式協(xié)助強密碼驗證肤舞。
6、不要在網(wǎng)絡(luò)上以純文本形式發(fā)送密碼
  以純文本形式在網(wǎng)絡(luò)上發(fā)送的密碼容易被竊聽均蜜。為了解決這一問題萨赁,應(yīng)確保通信通道的安全,例如兆龙,使用 SSL 對數(shù)據(jù)流加密杖爽。
7敲董、保護身份驗證 Cookie
  身份驗證 cookie被竊取意味著登錄被竊取∥堪玻可以通過加密和安全的通信通道來保護驗證票證腋寨。另外,還應(yīng)限制驗證票證的有效期化焕,以防止因重復(fù)攻擊導(dǎo)致的欺騙威脅萄窜。在重復(fù)攻擊中,攻擊者可以捕獲cookie撒桨,并使用它來非法訪問您的站點查刻。減少 cookie 超時時間雖然不能阻止重復(fù)攻擊,但確實能限制攻擊者利用竊取的 cookie來訪問站點的時間凤类。
8穗泵、使用 SSL 保護會話身份驗證 Cookie
  不要通過 HTTP 連接傳遞身份驗證 cookie。在授權(quán) cookie 內(nèi)設(shè)置安全的 cookie 屬性谜疤,以便指示瀏覽器只通過HTTPS 連接向服務(wù)器傳回 cookie佃延。
9、對身份驗證 cookie 的內(nèi)容進行加密
  即使使用 SSL夷磕,也要對 cookie 內(nèi)容進行加密履肃。如果攻擊者試圖利用 XSS 攻擊竊取cookie,這種方法可以防止攻擊者查看和修改該 cookie坐桩。在這種情況下尺棋,攻擊者仍然可以使用 cookie 訪問應(yīng)用程序,但只有當(dāng)cookie 有效時绵跷,才能訪問成功膘螟。
10、限制會話壽命
  縮短會話壽命可以降低會話劫持和重復(fù)攻擊的風(fēng)險抖坪。會話壽命越短,攻擊者捕獲會話 cookie并利用它訪問應(yīng)用程序的時間越有限闷叉。
11擦俐、避免未經(jīng)授權(quán)訪問會話狀態(tài)
  考慮會話狀態(tài)的存儲方式。為獲得最佳性能握侧,可以將會話狀態(tài)存儲在 Web 應(yīng)用程序的進程地址空間蚯瞧。然而這種方法在 Web場方案中的可伸縮性和內(nèi)涵都很有限,來自同一用戶的請求不能保證由同一臺服務(wù)器處理品擎。在這種情況下埋合,需要在專用狀態(tài)服務(wù)器上進行進程外狀態(tài)存儲,或者在共享數(shù)據(jù)庫中進行永久性狀態(tài)存儲萄传。ASP.NET支持所有這三種存儲方式甚颂。
  對于從 Web 應(yīng)用程序到狀態(tài)存儲之間的網(wǎng)絡(luò)連接,應(yīng)使用 IPSec 或 SSL 確保其安全,以降低被竊聽的危險振诬。另外蹭睡,還需考慮Web 應(yīng)用程序如何通過狀態(tài)存儲的身份驗證。
  在可能的地方使用 Windows驗證赶么,以避免通過網(wǎng)絡(luò)傳遞純文本身份驗證憑據(jù)肩豁,并可利用安全的 Windows帳戶策略帶來的好處。

補充:

- 1. 設(shè)置httponly屬性.

httponly是微軟對cookie做的擴展,該值指定 Cookie 是否可通過客戶端腳本訪問, 解決用戶的cookie可能被盜用的問題,減少跨站腳本攻擊,主流的大多數(shù)瀏覽器已經(jīng)支持此屬性辫呻。

  • asp.net全局設(shè)置:
//global中設(shè)置有所的cookie只讀
protected void Application_EndRequest(Object sender, EventArgs e)
        {
            foreach(string sCookie in Response.Cookies)
            {
                Response.Cookies[sCookie].HttpOnly = true;
                Response.Cookies[sCookie].Secure = true;
            }

        }
  • JAVA

httpOnly是cookie的擴展屬性清钥,并不包含在servlet2.x的規(guī)范里,因此一些javaee應(yīng)用服務(wù)器并不支持httpOnly放闺,針對tomcat祟昭,>6.0.19或者>5.5.28的版本才支持httpOnly屬性,具體方法是在conf/context.xml添加httpOnly屬性設(shè)置

<Context useHttpOnly="true"> ... </Context>

另一種設(shè)置httpOnly的方式是使用Tomcat的servlet擴展直接寫header

response.setHeader( "Set-Cookie", "name=value; HttpOnly");

- 2. 驗證成功后更換sessionID

在登錄驗證成功后雄人,通過重置session从橘,使之前的匿名sessionId失效,這樣可以避免使用偽造的sessionId進行攻擊础钠。代碼如下

protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException { 
    String username=request.getParameter("username"); 
    Stringpassword=request.getParameter("password");
    if("admin".equals(username) &&"pass".equals(password)){ //使之前的匿名session失效 
          request.getSession().invalidate(); 
          request.getSession().setAttribute("login", true);  
          response.sendRedirect("hello.jsp"); 
    }
    else{ 
          response.sendRedirect("login.jsp");
   } 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恰力,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子旗吁,更是在濱河造成了極大的恐慌踩萎,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件很钓,死亡現(xiàn)場離奇詭異香府,居然都是意外死亡,警方通過查閱死者的電腦和手機码倦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門企孩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人袁稽,你說我怎么就攤上這事勿璃。” “怎么了推汽?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵补疑,是天一觀的道長。 經(jīng)常有香客問我歹撒,道長莲组,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任暖夭,我火速辦了婚禮锹杈,結(jié)果婚禮上撵孤,老公的妹妹穿的比我還像新娘。我一直安慰自己嬉橙,他們只是感情好早直,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著市框,像睡著了一般霞扬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枫振,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天喻圃,我揣著相機與錄音,去河邊找鬼粪滤。 笑死斧拍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杖小。 我是一名探鬼主播肆汹,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼予权!你這毒婦竟也來了昂勉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扫腺,失蹤者是張志新(化名)和其女友劉穎岗照,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笆环,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡攒至,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了躁劣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迫吐。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖账忘,靈堂內(nèi)的尸體忽然破棺而出志膀,到底是詐尸還是另有隱情,我是刑警寧澤闪萄,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布梧却,位于F島的核電站奇颠,受9級特大地震影響败去,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烈拒,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一圆裕、第九天 我趴在偏房一處隱蔽的房頂上張望广鳍。 院中可真熱鬧,春花似錦吓妆、人聲如沸赊时。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祖秒。三九已至,卻和暖如春舟奠,著一層夾襖步出監(jiān)牢的瞬間竭缝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工沼瘫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抬纸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓耿戚,卻偏偏與公主長得像湿故,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子膜蛔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容