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

2021-08-25 15:00:28 字數 1132 閱讀 7785

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

圖示:

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

說明:

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

1. 黑客用自己的帳號登入,假設登入頁面是:   

2. 伺服器返回登入成功。   

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

4. 黑客把帶自己sessionid的位址傳送給一般使用者。;jsessionid=1234(不同的語言帶sessionid的方式不一樣,著是jsp的方式)   

5. 使用者在黑客給的位址中用自己的帳號進行登入,登入成功。(這個時候使用者登入的資訊就會覆蓋黑客之前的登入資訊,而且2個人用的是同1個sessionid)   6. 黑客重新整理頁面,看到的賬戶資訊就是使用者的資訊了,而不是之前黑客自己帳號的資訊。

防治:

要防止這種問題,其實也很簡單,只要在使用者登入時重置session(session.invalidate()方法),然後把登入資訊儲存到新的session中。

後語:

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

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

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

MySql中允許遠端連線

要達到這個目的需要實現兩點 開通使用者許可權 解除本地繫結 首先登陸伺服器端的mysql 不使用空格可以直接登陸 mysql u使用者名稱 p密碼 執行了 以後會看到所有的使用者以及對應的host 其中host的意思就是指允許訪問的ip位址,的意思就是任何ip,當然如果是你的本地伺服器,你也可以配置...

ubuntu中允許root遠端訪問

ubuntu中允許root遠端訪問 1 確保伺服器在安裝過程中,選擇安裝openssh軟體。如沒有進行安裝,請使用以下命令進行安裝 apt get install y openssh server 2 安裝完成後,使用root登入系統 3 編輯vim etc ssh sshd config檔案,將p...

在Ubuntu中允許root遠端訪問

如果使用如xshell等遠端工具首次通過root連線ubuntu會提示拒絕訪問,並不是密碼不正確,而是ubuntu預設禁止以root遠端連線。我們可以進行適當的配置來使root遠端連線可用。1.首先在本機使用root修改 etc ssh sshd config檔案。vim etc ssh sshd ...