程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> URL中允許攜帶sessionid帶來的安全隱患分析

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

編輯:關於JSP

圖示:

   下圖是從測試組發來的安全報告中剪出來的,圖有些小問題,本來想重畫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.cnblogs.com/BearsTaR/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved