这是设置: 我有一个基于服务器的应用程序。因此,所有数据都在服务器上(称为服务器“A”),用户使用基于桌面的富客户端连接到该服务器。富客户端还允许用户连接到其他服务器(称为'X'),这与服务器A完全无关。
问题: 用户已从富客户端登录到服务器“X”,因此富客户端具有正确的cookie以对服务器X进行身份验证。现在,用户在服务器A上进行调用,这需要服务器A出去获取一些来自服务器X的数据。如果富客户端已经针对服务器X进行了身份验证,是否有可能以某种方式绕过服务器A对服务器X进行身份验证。是否有某种方式来共享cookie(服务器A充当第二个客户端)?或者某种方式使服务器A转发服务器X的身份验证请求返回到富客户端并使其解析富客户端中的cookie。顺便说一下,我们使用apache的HttpClient。
我对服务器交互知识不是很了解,但我正在尝试衡量做这样的事情是多么容易/困难或常见/罕见。甚至可以以安全的方式做到这一点吗?
答案 0 :(得分:1)
在基本级别上,所有HTTP通信都是在客户端和服务器之间来回传递的文本数据。因此,如果您从服务器X响应中提取cookie并将其传递给服务器A,那么只要A理解为提取cookie数据并将cookie插入到服务器X的新请求中,您就可以成功实现你的要求。
简而言之,Cookie只是在服务器和客户端之间来回传递的文本数据。您可以抓取该数据并将其传递到您喜欢的任何位置。 (但你可能会破坏很多安全性最佳实践)
然而......许多服务器对请求伪造攻击变得越来越聪明,而且远程主机,客户端IP等等不同可能会使请求无效或至少警告服务器X.因此,对所有测试进行彻底测试/ stage / prod平台在对策略的可行性做出任何全面假设之前。
答案 1 :(得分:0)
如果您控制“富客户端”的行为,那么肯定。只需查看您将要访问的服务器的cookie,如果它包含您设置的用户登录跟踪cookie,如果没有,请查看其他服务器的cookie并复制您的任何用户登录跟踪cookie如果存在,请将其存储到cookie池中以获取您要为该服务器创建的请求。
据推测,由于您正在尝试共享用户,因此这两台服务器共享一个用户数据库,该数据库具有您在这些Cookie中使用的常见用户ID或其他哈希值。
如果另一方面,现在跟踪您的唯一用户实际上是基于会话的,其中cookie包含会话的哈希,并且该会话存储在服务器端,然后除非两个服务器共享会话商店,您将无法简单地从客户端传递相同的cookie。