我需要获取用户的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地址?
答案 0 :(得分:5)
X-Forwarded-For
的风险是用户可以自己创建标题,从而传递他们想要的任何IP。
解决方案是仅在REMOTE_ADDR
是您的可信代理的标头时信任标头。有Laravel package可以强制执行此限制。