posts - 36, comments - 419, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          URL中允許攜帶sessionid帶來的安全隱患。

          Posted on 2010-08-23 21:00 BearRui(AK-47) 閱讀(3133) 評論(6)  編輯  收藏 所屬分類: WEB

            很多WEB開發語言為了防止瀏覽器禁止了cookie而無法識別用戶,允許在URL中攜帶sessionid,這樣雖然方便,但卻有可能引起釣魚的安全漏洞。

           

          圖示:

             下圖是從測試組發來的安全報告中剪出來的,圖有些小問題,本來想重畫1個,在visio中沒找到合適的圖。所以只能用別人的圖了。

                 

           

          說明:   

            讓我們對上圖的步驟進行詳細說明:   

            1. 黑客用自己的帳號登錄,假設登錄頁面是:http://www.abc.com/login.jsp   

            2. 服務器返回登錄成功。   

            3. 黑客從cookie中查看自己的sessionid,比如是1234   

            4. 黑客把帶自己sessionid的地址發送給一般用戶。http://www.abc.com/login.jsp;jsessionid=1234(不同的語言帶sessionid的方式不一樣,著是jsp的方式)   

            5. 用戶在黑客給的地址中用自己的帳號進行登錄,登錄成功。(這個時候用戶登錄的信息就會覆蓋黑客之前的登錄信息,而且2個人用的是同1個sessionid)   6. 黑客刷新頁面,看到的賬戶信息就是用戶的信息了,而不是之前黑客自己帳號的信息。

           

          防治:  

            要防止這種問題,其實也很簡單,只要在用戶登錄時重置session(session.invalidate()方法),然后把登錄信息保存到新的session中。

           

          后語:  

            可能你跟我一樣,剛開始看到這個時候,就自己去測試到底能不能釣魚成功,經過我的測試是可以成功的,但測試過程中需要注意下面幾個問題:  

            1. 要注意你使用的語言是如何在URL中帶sessionid。(我測試的時候開始在URL中使用大寫的jsessionid,導致一直不起效)    

            2. 要http://www.abc.com/login.jsp;jsessionid=1234頁面登錄表單的action也帶上了jsessionid,不然也沒用。對于這個問題你可能覺得如果login.jsp表單的action是寫死,而不是讀取當前URL的,     可能就不會出現這個釣魚問題。這只能防住1個方向。黑客可以做1個和login.jsp一模一樣的頁面(比如http://www.abc1.com/login.jsp),然后把這個地址發個客戶,而這個地址中的表單這樣寫就可以:   <form action="http://www.abc.com/login.jsp;jsessionid=1234" ....



          [作者]:BearRui(AK-47)
          [博客]: http://www.aygfsteel.com/bearrui/
          [聲明]:本博所有文章版權歸作者所有(除特殊說明以外),轉載請注明出處.
          英雄,別走啊,幫哥評論下:  

          精彩推薦 好文要頂 水平一般 看不懂 還需努力

          評論

          # re: URL中允許攜帶sessionid帶來的安全隱患。[未登錄]  回復  更多評論   

          2010-08-24 09:43 by roywong
          學習了

          # re: URL中允許攜帶sessionid帶來的安全隱患。  回復  更多評論   

          2010-08-24 11:29 by dothwinds
          學習了,我想說基本上危害很小。

          # re: URL中允許攜帶sessionid帶來的安全隱患。  回復  更多評論   

          2010-08-24 15:52 by 吟風
          僅對于get提交的登錄。假域名太容易看出來了

          # re: URL中允許攜帶sessionid帶來的安全隱患。  回復  更多評論   

          2010-08-24 17:56 by BearRui(AK-47)
          @吟風
          呵呵,哪是因為我們都是做技術的,所以很容易看出來,很多人連域名是什么都不知道。

          # re: URL中允許攜帶sessionid帶來的安全隱患。  回復  更多評論   

          2010-08-30 16:07 by weigqa
          果然不錯!!
          不過,造個假COOKIES挺難的。

          # re: URL中允許攜帶sessionid帶來的安全隱患。  回復  更多評論   

          2010-08-30 16:12 by weigqa
          看來,還是得從服務器代碼中,盡可能的防止危險發生。。。
          主站蜘蛛池模板: 噶尔县| 海淀区| 友谊县| 漳州市| 阿克| 永城市| 龙里县| 扎囊县| 邳州市| 砀山县| 顺义区| 普格县| 方正县| 榆中县| 隆昌县| 项城市| 邯郸县| 定结县| 锡林浩特市| 铁力市| 涞源县| 西平县| 绥德县| 宿迁市| 东方市| 大名县| 隆回县| 沁水县| 长泰县| 桂东县| 尼玛县| 时尚| 喀喇沁旗| 绥滨县| 繁昌县| 湖州市| 明水县| 兴海县| 庆阳市| 新龙县| 兴山县|