![](/img/trans.png)
[英]Cookie-Based session persistence between pods in kubernetes
[英]Jetty/Tomcat encrypted cookie-based session storage?
Ruby on Rails已經支持已簽名的基於cookie的會話很長一段時間了 ,從那時起就出現了一些加密的實現 。 Python和PHP也有實現。
Java servlet容器Jetty或Tomcat是否存在這樣的野獸?
我們在集群環境中使用PHP實現獲得了基於RDBMS的會話的顯着性能提升,並且我有興趣嘗試使用我們的Java應用程序(目前使用Jetty 7)之類的東西。
我知道實現這一目標的其他方法( memcached , 同步內存緩存),但我相信,對於我們的特殊需求,這種存儲方法的局限性(輸出前的會話終結,4K cookie大小限制后的高效存儲)對於這個特定的應用程序,更簡單的部署環境超過了對超級秘密服務器端密鑰的依賴。
如果一個實現不存在,有沒有人有任何想法,為什么它不會? (例如,Java會話通常大於4K,因此不適合這種存儲方法)
我們已經實現了Session-In-Cookie並在Tomcat集群中成功使用它,以允許20個節點之間的會話共享,從而實現零中斷部署。 我剛剛在這里編寫了關於實現的兩部分系列的第一部分: http : //blog.shinetech.com/2012/12/18/simple-session-sharing-in-tomcat-cluster-using-the- session-in-cookie-pattern / 。 這部分涉及基本實現,安全方面將在第二部分中介紹。
看來這里有兩個問題:
關於第一個問題:是的,根據會話圖的大小(所有會話變量/對象的深度嵌套),cookie大小限制(實際上是HTTP標頭限制)是一個重要因素。 如果會話圖整齊地適合HTTP Header限制(在某種程度上可在Web服務器端配置)和/或可以使用基於REST的URL查詢參數進行擴充(以減輕服務器上的某些狀態信息) ...然后可以實現cookie。 然而,這將是程序化的而不是容器管理的。
關於第二個問題:保障會議是另一回事。 Java / J2EE系統中臭名昭着的JSESSIONID公共cookie是應用程序服務器上內存或磁盤緩存會話的簡單令牌密鑰。 它只是一個地圖鍵。 使用該密鑰,任何人都可以竊取或冒充用戶會話。 這可能是整個容器管理會話設備中最薄弱的環節之一。 有一些商業安全會話產品可以防止cookie竊取會話劫持,防止重放攻擊(可以通過捕獲重放加密登錄會話來獲取會話來打敗SSL)和其他攻擊媒介。 我所知道的一個產品可以在不更改代碼的情況下執行此操作(通過安全過濾器)。 但是,我不知道任何通用框架或開源計划來填補這個漏洞,可能是因為它需要一定程度的專業知識,而不僅僅是一般的應用程序開發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.