Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取IFrame用户的IP地址_C#_Asp.net_Security - Fatal编程技术网

C# 获取IFrame用户的IP地址

C# 获取IFrame用户的IP地址,c#,asp.net,security,C#,Asp.net,Security,我在第三方网站上托管了几个iFrame。第三方网站是允许用户访问主要供其他公司内部使用的网站的中间人 我想做的是根据第三方(中间人)网站的一系列有效IP验证用户的IP地址。如果它在允许用户访问IFrame的范围内,如果不在允许范围内-访问被拒绝 无论如何,在线上有很多示例可以获取Request.UserHostAddress,但这会返回我的IP地址 我的问题是:如何获取访问IFrame的用户的IP地址,以确保请求来自第三方站点 到目前为止,我已经尝试了ServerVariables和UserHo

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

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

无论如何,在线上有很多示例可以获取Request.UserHostAddress,但这会返回我的IP地址

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

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

更新 我终于有时间向大家介绍最新情况了。试图通过代码实现这一点并不是一个可行的解决方案。但是,我相信有一个解决方案可以通过IIS验证IP地址。在代码中,如果没有实现一个非常黑客的解决方案,我们将只能获得用户的IP地址

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


如果我成功了,我会指定这是我问题的解决方案。我认为你对应该发生的事情有错误的想法

据我了解,情况如下:

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

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

做您想要做的一件事是referer头()。这是一种请求说出页面让您访问该页面的方式。例如,如果您单击C页到D页的链接,则D页可能会收到一个referer标题,说明C页引用了它。重要的一点是,它可能会发送它。它通常被认为是一种安全风险(特别是在域之间),因此可能不会在所有情况下发送,也可能被安全工具剥离,最重要的是,它可能是伪造的,因此不适合用于安全目的

通常,在为页面提供服务时,很难确定该页面是否嵌入到特定页面的iframe中

我能马上想到的唯一方法是,在生成iframe及其src目标时,在站点B可以信任的站点A中嵌入某种加密签名令牌。令牌当然必须对其进行某种过期,以及类似的操作,以防止恶意用户获得不受限制的访问一旦他们有了令牌和某种防止重播攻击的方法,等等


一般来说,最好的办法是在您的站点B上使用安全性(例如用户名和密码),如果有人无意中看到了它,他们没有密码详细信息,因此他们什么地方也找不到。

不可能100%准确地确定iFrame http请求是否来自特定的第三方站点。这些变量可能是伪造的。当你说它会带回你的IP地址时,这不是你测试它时应该做的吗?或者你的意思是,即使你从其他系统测试它,它总是返回相同的IP地址?如果是的话,IP地址是什么?它可能是一个负载平衡器或代理或类似的东西,正在添加自己的信息……您不能使用XframeOptions吗。这样你就可以确保它来自第三方网站吗?@Brad M是的,他们可以被欺骗,但要求就是要求。您是否有更好的方法固定IFrame?IFrames一开始并不好,但这是我唯一的选择。@Chris-Hmm。我希望它在本地运行时能恢复我的IP。但是,当我从本地主机运行iFrame,进入第三方站点并访问这些iFrame时,我应该获得第三方的IP地址,对吗?