2011-05-10 188 views
4

嗨,我最近讀了JSP並碰到它的技術,主要是會話。在會議中,我讀了URL重寫爲了維持與客戶端的會話而完成的一種方法。但是,由於URL重寫會使用會話ID更改URL,並且客戶端可以看到它。 這不是安全問題嗎?比方說,例如,如果有任何一個人注意到這個會話ID除了特定的用戶,並且可以使用它嗎?否則有防止這些技術?Url重寫 - 這是否會導致安全問題?

如果我錯了,糾正我。

回答

7

當然,這是一個安全問題。如果您快速記下jsessionid的值,無論是從其他人錯誤地公開復制過的URL還是公開發布的一些HTTP調試工具(Firebug)的屏幕截圖來顯示請求/響應標頭,並且有問題的網站維護用戶通過登錄,只需將jsessionid Cookie附加到URL或請求標頭,就可以在同一用戶下登錄。很快,因爲這些會話在閒置30分鐘後默認過期。這被稱爲session fixation攻擊。

您可以完全禁用URL重寫,以便jsessionid不會出現在URL中。但是你仍然對會話修復攻擊很敏感,一些黑客可能已經在公共網絡或某些木馬/病毒中安裝了HTTP流量嗅探器,或者甚至使用XSS來了解這些cookie。要明確的是,這個安全問題並不特定於JSP,PHP,ASP或任何通過基於cookie的會話維護登錄的網站,對此非常敏感。

要在登錄方面確保安全,請讓登錄和登錄流量通過HTTPS而不是HTTP並僅使用Cookie HTTPS(安全)。

+0

那麼說,但爲什麼這不是特定於JSP? – 2011-05-10 03:34:09

+1

JSP'HttpSession'由一個'jsessionid' cookie支持。 PHP'$ _SESSION'由一個'PHPSESSID' cookie支持。 ASP'Session'由一個'ASPSESSIONID' cookie支持。如果您將登錄用戶存儲在會話中,那麼哪種語言更敏感或不敏感並不重要。 JSP'jsessionid'只是更多的消息,因爲一些Java服務器/框架默認打開了URL重寫。 – BalusC 2011-05-10 03:36:55

+0

噢好吧,我誤解了你說的話,謝謝你的回覆 – 2011-05-10 03:38:11

0

我相信你指的是無Cookie會話。儘管我已經看到它在Java圈子中被稱爲「URL重寫」。

還有一些額外的會話劫持問題(它們適用於所有支持無Cookie會話的Web開發框架 - 不僅僅是JSP)。但即使使用cookie,會話劫持也是可能的。

這是關於無Cookie會話和風險/好處的MSDN上一篇非常好的深入文章。再次,這些都是平臺不可知的。

http://msdn.microsoft.com/en-us/library/aa479314.aspx(朝底部)

+0

是的,我的意思是,當客戶端瀏覽器已禁用Cookie .. – 2011-05-10 03:19:59

1

大多數(如果不是全部的話)安全圈都不鼓勵URL重寫會話cookie。 OWASP ASVS明確禁止使用它,因爲它會通過不安全的介質暴露會話標識符。

啓用會話cookie的URL重寫功能後,URL可以(通過會話標識符)傳送到其他站點,從而通過HTTP Referrer標頭公開會話標識符。實際上,瀏覽器對位於另一個域中的資源的簡單請求將導致可能的劫持(通過Man-In-The-Middle攻擊)或會話固定;這與站點中的跨站點腳本漏洞一樣好。

另一方面,當網站執行Cookie的URL重寫時,不同瀏覽器中引入的HttpOnly和Secure-Cookie標誌等附加保護機制將不再以保護會話Cookie的方式使用。