2015-11-03 21 views
-1

好吧我試圖在我的本地主機上測試會話固定/劫持。當一個標籤登錄時,在其他標籤上自動登錄

我想給我的URL從SID從攻擊者到受害者,並讓受害者在該URL登錄。但是當受害者登錄時,攻擊者刷新頁面並仍然在登錄頁面中。

然後我發現,如果我在瀏覽器中有兩個登錄選項卡,受害者在選項卡1登錄,但選項卡2在刷新後不會自動登錄。所以這可能就是爲什麼我的攻擊者停留在登錄頁面上?

我的問題是,如果他已經在一個選項卡中登錄,我需要在我的php文件中自動登錄其他選項卡中的用戶。這種情況下我應該關注哪些關鍵字?

+0

要麼使用'polling'或'push'技術。 –

回答

0

會話使用cookie來記住用戶是否已登錄。當你開始一個會話(session_start())時,服務器發送一個會話cookie和一個唯一的會話ID。當用戶請求一個需要登錄的頁面時,服務器會檢查該cookie的ID以確保其有效。

會話固定和會話HiJacking非常相似,主要的區別在於會話如何被破壞。切勿將SESSID放入URL中,您只是要求被黑客入侵。相反,我建議你創建一個會話變量,當用戶登錄
EG:

自動登錄:校驗碼

session_start(); 
if(isset($_SESSION['logged_in'])){ 
    header("location:loginonlypage.php") 
} 

防止會話劫持/固定方式:
然而,僅僅因爲您的會話ID不在URL中並不意味着會話劫持/注視不會發生。使用用戶的ip作爲防範措施。此外,請務必將會話cookie設置爲僅用於HTTP,以便Javascript不會試圖吃掉您的cookies。)

ini_set('session.cookie_httponly', 1); //SET HTTP ONLY COOKIE 
    if (!isset($_SESSION['last_ip'])) { 
     $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR']; 
    } 

    if ($_SESSION['last_ip'] !== $_SERVER['REMOTE_ADDR']) { 
     session_unset(); 
     session_destroy(); 

    } 
+0

我有session_start();在我的每個文件中,但是如果用戶已經登錄了一個選項卡,則使用您提供的代碼進行刷新時,另一個選項卡仍將保留在登錄頁面中。如果會話存在,它會將用戶重定向到一個頁面? 'logged_in'雖然做了什麼? – Lozy

+0

在你的登錄php腳本中檢查密碼和用戶名,設置這個新的會話變量。 EG:'$ _SESSION [「logged_in」] = true',然後通過'session_destroy()'取消設置變量。 –