前些日子發生了一件非常奇怪而令人尷尬的事情,我沒有用詞來形容發生了什麼。在Tomcat上發生Spring Security/JSF/Hibernate意外會話劫持?
我的應用程序在Tomcat 7上運行與JSF 2.1,Hibernate 4,Spring Security集成的Spring 3。我曾與C級別的重要人員通話,我們同時在測試環境中同時相同的頁面。當他的網頁提供我的個人帳戶詳情時,他幾乎在同一時刻瀏覽到我正在導航的頁面。我不相信他,所以我走到他的辦公室,果然,他以某種方式登錄爲我的賬戶,他沒有密碼。
該應用程序將保護病人的健康信息,所以我被命令爲C級人員提供發生了什麼事情的完整報告,但我無法找到這是可能的。我搜索了代碼庫,沒有任何結果。我試圖在多個場合重現確切的場景,並且從未能夠重現它。我甚至沒有受過教育的猜測,我很高興。
我想也許可能會對存儲在Tomcat應用程序上下文實現中的會話有一些不安全的線程操作,但如果它不可重現,我無法證明這一點。我還認爲,由於Spring Security在其他請求之前以Filter的形式運行,並且可能會轉發其他servlet過濾器中的其中一個受到干擾。另外兩個是我最近添加的Primefaces File Upload過濾器和Omnifaces SEO過濾器。
Omnifaces過濾器事實上干擾了Primefaces File Upload過濾器,我不得不對它的配置進行修改,以便它們中的兩個可以很好地對待,所以我仍然覺得這可能也是可能的。
Spring Security中是否有任何已知的錯誤導致了類似的問題? Tomcat中是否存在關於意外地從ApplicationContext提供錯誤會話狀態的問題?是否有其他人遇到類似的問題或對此有獨特的見解?
編輯:不久發佈此之後,我發現這一點,貼僅在幾天前:
Session mix up - apache httpd with mod_jk, tomcat, spring security - serving data of other user
這幾乎是完全一樣的設置爲我的Apache httpd的+ mod_jk的前面插件Tomcat的肯定使我不是瘋了:)
UPDATE:
我能夠重現問題以米沒有mod_jk或Apache的開發環境,所以我可以可靠地排除這個問題。
當人們在這裏看到其他人的賬號時,就會被ISP過度激烈地緩存。那麼,您和應用程序之間是否存在代理/緩存? – ChrisF 2013-02-13 17:30:54
@ChrisF只需將Apache委託給mod_jk Tomcat連接器即可。它是運行Apache和Tomcat的單臺服務器。也許Apache正在緩存一些東西?我會嘗試刪除它,看看我是否可以重現錯誤。 – 2013-02-13 17:44:46