【问题标题】:Do all web requests contain the requestor's IP?是否所有 Web 请求都包含请求者的 IP?
【发布时间】:2010-01-02 21:45:40
【问题描述】:

我能否依赖请求者的 IP 来处理所有 Web 请求?

我有一个 asp.net 应用程序,我想使用 IP 来识别未经身份验证的访问者。我真的不在乎 IP 是否是唯一的,只要那里有东西,这样我就不会得到空值。

如果不是,我想我将不得不处理值为空的情况。

或者有比IP更好的标识符吗?

【问题讨论】:

  • "我想使用 IP 来识别未经身份验证的访问者。" - 如果一个内网有 100 台机器使用相同的外部 ip 怎么办?
  • 您在这里使用什么技术?有许多身份验证框架。
  • 如果每个用户的 IP 不是唯一的,也可以。我只是想确保我能以某种方式识别“匿名”用户,但我不在乎这意味着 1 个用户还是 100 个用户。
  • 我考虑过 cookie,但我真的不需要确保我在会话中跟踪同一个用户,我只是在跟踪“一个”用户。
  • 如果经过身份验证的用户和匿名用户都从代理服务器后面访问您的站点怎么办?他们都将拥有相同的IP。此外,如果用户在代理场后面,他们的 IP 地址可能会因请求而异。我应该认为您会希望经过身份验证的用户具有某种会话状态,而缺少这种状态的每个人都是匿名的。

标签: asp.net ip-address webrequest


【解决方案1】:

您可以从Request.ServerVariables["REMOTE_ADDR"] 获得此信息。

防守并没有什么坏处。如果您担心某些未设置的可怕错误情况,请检查该情况并进行相应处理。

这个值没有用的原因可能有很多。您可能只能获得最后一跳的地址,例如本地网络上的负载平衡器或 SSL 解码器。它可能是 ISP 代理,或某些公司的 NAT 防火墙。

请注意,某些代理可能会在额外的 HTTP 标头中提供它们为其转发流量的 IP,可通过以下方式访问 Request.ServerVariables["HTTP_X_FORWARDED_FOR"]。您可能想先检查一下,然后再返回Request.ServerVariables["REMOTE_ADDR"]Request.UserHostAddress

记录这些内容以供参考/审核当然不是一个坏主意。

【讨论】:

  • +1,您可以添加 REMOTE_ADDR 的问题列表,当使用 IPV6 时它会变得有点时髦。
【解决方案2】:

我相信这个值是由您的网络服务器设置的,并且真的没有办法伪造它,因为如果他们将 IP 设置为其他东西,您对那里的请求的响应将无法回复给他们。

您唯一应该担心的是代理。来自代理的每个人都将获得相同的 IP。

【讨论】:

    【解决方案3】:

    您将始终获得 IP 地址,除非您的网络服务器正在侦听某种非 IP 网络的网络。但每个用户的 IP 地址不一定是唯一的。

    【讨论】:

      【解决方案4】:

      嗯,web 请求是一个 http 连接,它是一个 tcp 连接,所有的 tcp 连接都有两个端点。所以,它一直存在。但这就是你所知道的。它既不是唯一的,也不是可靠准确的(包含所有代理和东西)。

      【讨论】:

        【解决方案5】:

        是的,每个请求都必须有一个 IP 地址,但如上所述,一些 ISP 使用代理、NAT 或网关可能无法为您提供个人计算机。

        您可以通过以下方式轻松获取此 IP(在 c# 中):

        字符串 IP = Context.Request.ServerVariables["REMOTE_ADDR"].ToString();

        或在 asp/vbscript 中使用

        IP = request.servervariables("REMOTE_ADDR")

        【讨论】:

          【解决方案6】:

          IP 地址对于识别用户没有多大用处。如前所述,公司代理和其他专用网络可以显示为单个 IP 地址。

          您如何对用户进行身份验证?通常,您会让他们登录,然后将该状态存储在您应用中的会话中。

          【讨论】:

            猜你喜欢
            • 2020-05-06
            • 1970-01-01
            • 1970-01-01
            • 2019-05-25
            • 2016-11-12
            • 1970-01-01
            • 2016-08-24
            • 1970-01-01
            • 2023-03-29
            相关资源
            最近更新 更多