2009-06-24 111 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。

相关问题