我需要得到我的用户的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地址?
1条答案
按热度按时间yzuktlbb1#
X-Forwarded-For
的风险在于用户可以自己创建头,从而传递沿着任何他们希望的IP。解决方案是仅在
REMOTE_ADDR
是您的可信代理时才信任header。有一个Laravel package(编辑:现在是part of Laravel core)可以让您强制执行此限制。