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

4ioopgfo  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(102)

我需要得到我的用户的IP地址。
这篇文章How to get Client Ip Address in Laravel 5.1?
上面提到的文章使用了Request::ip();
然而,这个方法返回我的服务器IP地址。从我可以从其他来源了解,这发生在网站是localhost -但网站托管,是活在服务器上。
这个网站是在线的,但它可能指的是localhost,因为该网站可能坐在自己的服务器上(我没有任何服务器配置的经验,知道这是真的还是假的,只是一个猜测)。
当我连接到数据库主机时,我也使用localhost引用,而不是像mysql.phpmyadmin.hosting.com这样的数据库主机。因此,我的猜测是,Request::ip();返回服务器IP,因为该网站不知何故位于localhost。
但是,如果我使用$_SERVER 'HTTP_X_FORWARDED_FOR'];我会得到正确的IP地址。
现在我的最后一个问题:**这是安全的使用?**是否有其他方法使用Laravel函数来发出此请求?
据我所知,根据How to get the client IP address in PHP?的说法,$_SERVER [HTTP_X_FORWARDED_FOR];可能有安全漏洞。

我可以放心使用$_SERVER['HTTP_X_FORWARDED_FOR'];吗?如果不能,还有什么方法可以安全地获取用户的IP地址?

yzuktlbb

yzuktlbb1#

X-Forwarded-For的风险在于用户可以自己创建头,从而传递沿着任何他们希望的IP。
解决方案是仅在REMOTE_ADDR是您的可信代理时才信任header。有一个Laravel package(编辑:现在是part of Laravel core)可以让您强制执行此限制。

相关问题