2010-05-23 36 views
2

我是網絡開發新手,並試圖抓住安全問題。我閱讀了http://guides.rubyonrails.org/security.html這篇文章,這些是作者提到的攻擊者如何修復會話的一些步驟。會話固定

  1. 攻擊者創建了一個有效的會話ID:他就裝在那裏,他要解決該會話的Web應用程序的登錄頁面,並採取會話ID從響應中的Cookie(見1號和2圖片)。
  2. 他可能維護會話。即將到期的會話,例如每20分鐘一次,大大縮短了攻擊的時間範圍。因此他不時訪問Web應用程序以保持會話的活躍。
  3. 現在,攻擊者將強制用戶的瀏覽器到使用這個會話ID(在影像中看到3號)。由於您不能更改另一個域的Cookie(因爲具有相同的源策略),因此攻擊者必須從目標Web應用程序的域中運行JavaScript。 XSS將JavaScript代碼注入應用程序可以完成這種攻擊。下面是一個例子:<腳本>的document.cookie = 「_ SESSION_ID = 16d5b78abb28e3d6206b60f22a03c8d9」; </script >。稍後閱讀有關XSS和注射的更多信息。
  4. 攻擊者利用JavaScript代碼將受害者引誘至受感染頁面。通過查看該頁面,受害者的瀏覽器將會話ID更改爲陷阱會話ID。
  5. 由於新的陷阱會話未使用,Web應用程序將要求用戶進行身份驗證。
  6. 從現在起,受害者和攻擊者將共同使用具有同一會話的Web應用程序:會話成爲有效和受害者沒有注意到的攻擊。

我不明白兩點。

  1. 爲什麼用戶在第5步登錄,因爲會話是通過發送?
  2. 我看到了wiki上的可能解決方案,如用戶屬性檢查等。爲什麼我們不能在步驟5中爲用戶輸入用戶名和密碼時重置會話?

回答

1

1)攻擊者在步驟1 & 2中收到尚未登錄的會話。這是陷阱會議。在步驟5中,受害者登錄時認爲會話標識是新的(並且是「祕密」)。在受害者登錄的時刻,攻擊者能夠重新使用「祕密」會話ID並有效登錄。

因此,要回答你的問題:被害人是由登錄因爲陷阱會話還沒有登錄,以誘騙受害者使用這個會話ID登錄。

2)解釋會話固定的步驟之後,第一個對策(2.8節)是創建一個新的會話,並拋棄舊的在登錄後,你的想法是究竟是什麼!