我正在编码Web应用程序,我想保护我的客户帐户,以便我获取其IP并将其存储在数据库中
足够使用
$_SERVER['REMOTE_ADDR']
OR
最好使用这些
$_SERVER['HTTP_CLIENT_IP']
$_SERVER['HTTP_X_FORWARDED_FOR']
因为我已经读到最后两个都不安全,所以 REMOTE_ADDR 是检测访问者IP的最佳方法
答案 0 :(得分:0)
这取决于您的用户访问您的Web应用程序的方式。 $_SERVER['REMOTE_ADDR']
提供连接到服务器的任何端点的IP地址。如果您的站点位于CDN(例如CloudFlare)的后面,则它将是CDN节点的IP,而不是用户的IP。
$_SERVER['HTTP_CLIENT_IP']
和$_SERVER['HTTP_X_FORWARDED_FOR']
均由您和客户端之间存在的代理服务器(例如CDN缓存)设置。
通常,最好的选择是使用HTTP_X_FORWARDED_FOR
(如果存在),如果未设置REMOTE_ADDR
,则退回到HTTP_X_FORWARDED_FOR
。
[编辑:请注意,访问您网站的客户端可以添加伪造的请求标头-例如,它们可能直接连接到您的服务器,并提供伪造的X-Forwarded-For
标头。无法相信此标头是您用户的实际IP。不幸的是,无法保证您的Web应用看到的IP实际上是用户的真实IP。您和它们之间可能存在伪造的标头,NAT等。使用某种IP过滤器可以帮助提高安全性,但这并不是一个解决方案-您还需要其他解决方案。]