使用与HTTP_X_FORWARDED_FOR类似的方法获取laravel中的用户IP地址

时间:2017-01-19 17:54:33

标签: php laravel

我需要获取用户的IP地址'。

我发现了这篇文章How to get Client Ip Address in Laravel 5.1?

上述文章使用Request::ip();

但是,此方法返回我的服务器IP地址。根据我从其他来源可以理解的情况,当网站是本地主机时会发生这种情况 - 但该网站是托管的,并且在服务器上运行。

此网站是在线和在线的,但它可能会引用localhost,因为该网站可能位于自己的服务器上(我没有任何服务器配置经验,知道这是否属实,只是一个猜测)。

当我连接到数据库主机时,我也使用localhost引用,而不是mysql.phpmyadmin.hosting.com作为数据库主机。因此,我的猜测是,Request::ip();返回服务器ip,因为该网站以某种方式位于localhost。

但是,如果我使用$ _SERVER ['HTTP_X_FORWARDED_FOR'];我得到了正确的IP地址。

现在回答我的最后一个问题:使用它是否安全?是否有其他方法可以使用Laravel函数发出此请求?

根据我的理解,$ _SERVER ['HTTP_X_FORWARDED_FOR'];根据{{​​3}},可以有安全漏洞。

我可以安全地使用$_SERVER['HTTP_X_FORWARDED_FOR'];而不用担心吗?如果没有,我还能采取什么其他方式来安全地获取用户的IP地址?

1 个答案:

答案 0 :(得分:5)

X-Forwarded-For的风险是用户可以自己创建标题,从而传递他们想要的任何IP。

解决方案是仅在REMOTE_ADDR是您的可信代理的标头时信任标头。有Laravel package可以强制执行此限制。