首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用$_SERVER['REMOTE_ADDR']、$_SERVER['HTTP_CLIENT_IP']和$_SERVER['HTTP_X_FORWARDED_FOR']

问使用$_SERVER['REMOTE_ADDR']、$_SERVER['HTTP_CLIENT_IP']和$_SERVER['HTTP_X_FORWARDED_FOR']
EN

Stack Overflow用户
提问于 2018-06-30 13:04:27
回答 1查看 2.7K关注 0票数 0

我正在编写web应用程序,我想保护我的客户帐户,所以我将获取他们的in并将它们存储在数据库中

足够用了吗?

代码语言:javascript
复制
$_SERVER['REMOTE_ADDR']

或

最好用这些

代码语言:javascript
复制
$_SERVER['HTTP_CLIENT_IP']

$_SERVER['HTTP_X_FORWARDED_FOR']

因为我读过最后两个不安全,REMOTE_ADDR是检测访问者is的最佳方法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-30 13:07:18

这取决于用户如何访问您的web应用程序。$_SERVER['REMOTE_ADDR']提供连接到服务器的任何端点的IP地址。如果您的站点位于CDN (例如CloudFlare)后面,这将是CDN节点的IP,而不是用户的IP。

$_SERVER['HTTP_CLIENT_IP']和$_SERVER['HTTP_X_FORWARDED_FOR']都是由存在于您和客户端之间的代理服务器(例如CDN缓存)设置的。

通常,最好的选择是如果存在的话使用HTTP_X_FORWARDED_FOR,如果没有设置HTTP_X_FORWARDED_FOR,则返回到REMOTE_ADDR。

[编辑:请注意,访问您的站点的客户端可以添加伪造的请求头-例如,他们可能直接连接到您的服务器,并提供一个伪造的X-Forwarded-For头。此标头不能被信任为用户的实际IP。不幸的是,没有办法保证您的way应用程序看到的IP实际上是用户的真正IP。你和他们之间可能有伪造的标题、NAT等等。使用某种IP过滤器可以帮助提高安全性,但它本身并不是一个解决方案--您还需要一些其他的解决方案。]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51115187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档