相关疑难解决方法(0)

如何正确使用HTTP_X_FORWARDED_FOR?

好吧,我有一个小的身份验证问题.我的Web服务允许使用用户名和密码通过HTTP连接到我的API,但此连接也可以限制为特定的IP地址.

这意味着$_SERVER['REMOTE_ADDR']可能不正确.我已经知道任何IP信息都无法真正依赖 - 我只有在尝试添加另一层安全性时才有限制.

如果这是对我的Web服务器的请求的一般概述:

clientSERVER => clientPROXY => myPROXY => mySERVER

那么这意味着mySERVER显示REMOTE_ADDRmyPROXY而不是客户端的myPERVX,并将客户端的实际IP发送为HTTP_X_FORWARDED_FOR.

为了解决这个问题,我的Web服务有一个"可信代理"IP地址列表,如果REMOTE_ADDR是来自其中一个可信IP地址,那么它告诉我的Web服务实际的IP地址是值HTTP_X_FORWARDED_FOR.

现在问题出在clientPROXY上.这意味着(通常)mySERVER获取HTTP_X_FORWARDED_FOR具有多个IP地址的值.根据HTTP_X_FORWARDED_FOR文档,该值是以逗号分隔的IP地址列表,其中第一个IP是实际真实客户端的IP,而每个其他IP地址是代理的IP地址.

因此,如果HTTP_X_FORWARDED_FOR有多个值并且我的服务是IP限制的,我是否必须检查HTTP_X_FORWARDED_FOR针对我允许的IP列表的"最后"值并忽略实际的客户端IP?

我假设在一个系统中,我必须设置允许的IP地址列表,白名单IP地址应该是代理的IP地址而不是代理后面的IP(因为那可能是一些本地主机IP并经常更改) .

那是什么HTTP_CLIENT_IP

php ip proxy forwarding

35
推荐指数
4
解决办法
9万
查看次数

为什么ServerVariable ["REMOTE_ADDR"]返回服务器IP?

我有以下代码:

string ip = Request.ServerVariables["REMOTE_ADDR"];
Run Code Online (Sandbox Code Playgroud)

其中,在测试环境中确实返回用户IP地址,但是当我们将网站部署到生产环境时,此变量具有托管应用程序的服务器的IP.有帮助吗?

.net c# asp.net

18
推荐指数
1
解决办法
5万
查看次数

如何从Java中的HTTP标头中检索IP地址

我很好奇是否有任何图书馆已经处理过这种东西,或者我必须再次自己做.那么,问题是我想从我的服务器上的访问者HTTP头请求中获取IP地址字段,并用Java完成整个事情?你能帮忙的话,我会很高兴.提前致谢.

java http httpwebrequest http-headers

15
推荐指数
2
解决办法
6万
查看次数

PHP:如果使用Heroku托管,则获取REAL客户端IP

在过去我用过

$ip = $_SERVER["REMOTE_ADDR"];
Run Code Online (Sandbox Code Playgroud)

哪个会返回客户端的IP.我最近开始使用Heroku托管我的网站,我发现上面的代码不再返回客户端IP.

有人遇到过这个吗?如果我的网站使用Heroku托管,我将如何使用PHP获取客户端的真实IP地址?

php ip-address heroku

3
推荐指数
1
解决办法
752
查看次数

标签 统计

php ×2

.net ×1

asp.net ×1

c# ×1

forwarding ×1

heroku ×1

http ×1

http-headers ×1

httpwebrequest ×1

ip ×1

ip-address ×1

java ×1

proxy ×1