2009-06-24 109 views
2

以下是設置: 我有一個基於服務器的應用程序。因此,所有數據都在服務器上(稱爲服務器'A'),用戶使用基於桌面的胖客戶端連接到該服務器。富客戶端還允許用戶連接到與服務器A完全無關的其他服務器(稱爲'X')。兩個不同的客戶可以共享cookie嗎?

問題: 用戶已從富客戶端登錄到服務器「X」所以富客戶端有正確的cookie來對服務器X進行身份驗證。現在,用戶在服務器A上進行調用,這需要服務器A出去並從服務器X獲取一些數據。是否有可能以某種方式繞過服務器A鑑於富客戶端已經針對服務器X進行了身份驗證,因此需要對服務器X進行身份驗證。是否有某種方法可以共享Cookie(服務器A充當第二個客戶端)?或者某種方式讓服務器向遠程服務器X的身份驗證請求返回到胖客戶端,並使其在富客戶端的cookie中解析。順便說一句,我們使用Apache的HttpClient。

我不是服務器交互非常熟悉,但我想,以瞭解如何輕鬆/硬盤或普通/難得的是它做這樣的事情。甚至有可能以安全的方式做到這一點?

+2

我很想在MarthaStewart.com上提出這個問題。 – Nosredna 2009-06-24 23:09:41

回答

1

在基本級別上,所有HTTP通信都是在客戶端和服務器之間來回傳遞的文本數據。因此,如果您從服務器X響應中提取Cookie並將其傳遞給服務器A,那麼只要A瞭解提取Cookie數據並將Cookie插入到服務器X的新請求中,您就可以成功實現你所要求的。

簡而言之..餅乾只是獲取傳遞來回服務器和客戶端之間的文本數據。您可以抓取該數據並將其傳遞到任何地方。 (你很可能被打破了很多安全的最佳做法,雖然)

但是......許多服務器都有關請求僞造攻擊變得越來越聰明,事實上,遠程主機,客戶端IP等..不同可能會使請求無效,或至少報警服務器X.因此,在對策略的可行性作出任何一攬子假設之前,請在所有測試/階段/產品平臺上進行徹底測試。

0

如果您控制「富客戶端」的行爲,那麼肯定的。只要看看你要訪問的服務器有哪些cookie,如果它包括你設置的用戶登錄跟蹤cookie,如果沒有,查看其他服務器的cookie,並複製任何用戶登錄跟蹤cookie如果存在,請將其存儲到您要爲該服務器製作的請求的Cookie池中。

據推測,因爲你想分享的用戶,兩臺服務器共享具有共同的用戶ID或其他哈希您使用的這些cookie,用戶數據庫。

如果另一方面,現在唯一跟蹤您的用戶基本上是基於會話的,其中Cookie包含會話的散列並且會話存儲在服務器端,除非這兩個服務器共享會話存儲,您將無法簡單地從客戶端傳遞相同的cookie。

相關問題