获取IFrame用户的IP地址

时间:2013-07-31 15:26:31

标签: c# asp.net security

我正在第三方网站上托管多个IFrame。第三方网站是允许用户访问主要供其他公司内部使用的网站的中间人。

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

无论如何,有大量的在线示例来获取Request.UserHostAddress,但这会带回我的IP地址。

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

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

更新

我终于更新了所有人。尝试通过代码执行此操作不是一个可行的解决方案。但是,我相信通过使用IIS验证IP地址可以解决这个问题。在没有实施非常苛刻的解决方案的代码中,我们只能获得用户的IP地址。

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

Direct different IP's to different pages on IIS7

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

1 个答案:

答案 0 :(得分:2)

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

据我了解情况如下:

您的网站A的iframe中包含来自网站B的内容。当您直接访问站点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上使用安全性(例如用户名和密码),如果有人无意中看到它,他们就没有密码详细信息,所以他们无法到达任何地方。