0

我在第 3 方网站上托管了几个 IFrame。第 3 方网站是允许用户访问主要供另一家公司内部使用的网站的中间人。

我想做的是根据第三方(中间人)网站的一系列有效 IP 验证用户的 IP 地址。如果它在范围内,则允许用户访问 IFrame,如果不是 - 拒绝访问!

无论如何,网上有很多例子可以获取 Request.UserHostAddress,但这会带回我的 IP 地址。

我的问题是:如何获取正在访问 IFrame 的用户的 IP 地址以确保请求来自第 3 方站点?

到目前为止,我已经尝试过 ServerVariables 和 UserHostAddress。他们都返回::1。我正在运行在本地托管 IFrame 的站点,并通过托管在服务器上的第 3 方站点访问这些站点。

更新

我终于有时间更新每个人了。试图通过代码来做到这一点不是一个可行的解决方案。但是,我相信通过使用 IIS 验证 IP 地址可以解决此问题。在没有实现非常hacky解决方案的代码中,我们将只能获取用户的IP地址。

但是,通过使用 IIS,您可以验证第 3 方的地址。SO的这篇文章演示了如何做到这一点。该帖子不适合我的情况,但它确实向您展示了如何验证 IP 范围。

将不同的 IP 定向到 IIS7 上的不同页面

如果我成功了,我将指定这是我的问题的解决方案。

4

1 回答 1

2

我认为你对应该发生的事情有错误的想法。

据我了解,情况是这样的:

您有站点 A,其中包含来自站点 B 的内容的 iframe。当您直接访问站点 B 时,您获得的 IP 地址用于您的计算机。您所期望的是,当您访问站点 A 时,站点 B 收到的 IP 地址将是站点 A 的 IP 地址。这是不正确的。

当您查看站点 A 时,您将下载包含 IFrame HTML 的页面,该页面将通过src="url"类型语法告诉它要在该框架中放置哪些内容。此时,您的浏览器(即在您的计算机上)将向站点 B 请求内容,并且站点 B 将再次收到您计算机的 IP。

做你想做的一件事是引用标题(https://en.wikipedia.org/wiki/HTTP_referer)。这是请求说明哪个页面告诉您访问该页面的一种方式。例如,如果您单击页面 C 上的链接到页面 D,则页面 D 可能会收到一个引用标题,说明页面 C 引用了它。其中重要的部分是它可以发送它。它通常被认为是一种安全风险(特别是在域之间),因此可能并非在所有情况下都可以发送,或者可能会被安全工具剥离,最重要的是可以伪造,因此不适合安全目的。

通常,在提供页面时确定它被嵌入到特定页面的 iframe 中并不容易。

我能想到的唯一方法是在生成 iframe 时,它​​的 src 目标是在站点 B 可以信任的站点 A 中嵌入某种加密签名的令牌。令牌当然必须有某种过期和类似的东西,以防止恶意用户在拥有令牌后获得不受限制的访问权限,并通过某种方式防止重放攻击等。

一般来说,最好的选择是在您的站点 B 上使用安全性(例如用户名和密码),如果有人无意中看到它,他们没有密码详细信息,因此他们无处可去。

于 2013-07-31T17:34:11.833 回答