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

Pat*_*ick 2 php laravel

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

我找到了这篇文章如何在Laravel 5.1中获取客户端IP地址?

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

但是,此方法返回我的服务器IP地址。据我从其他来源了解到,这是在站点为localhost时发生的-但是站点是托管的,并且位于服务器上。

这个站点是在线的并且在线的,但是它可能称为localhost,因为该站点可能位于其自己的服务器上(我没有服务器配置方面的经验,只能知道这是不是真的)。

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

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

现在我的最后一个问题使用安全吗?还有使用Laravel函数发出此请求的另一种方法吗?

据我了解,$ _ SERVER ['HTTP_X_FORWARDED_FOR']; 根据如何在PHP中获取客户端IP地址,可能会有安全漏洞

我可以$_SERVER['HTTP_X_FORWARDED_FOR'];安全使用而不必担心吗?如果没有,我可以采取其他方法安全地获得用户IP地址吗?

cee*_*yoz 5

风险X-Forwarded-For在于用户可以自己创建标头,从而传递他们希望的任何IP。

解决方案是仅REMOTE_ADDR在信任代理的头时信任头。有一个Laravel软件包,可让您强制执行此限制。