首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何伪造$_SERVER['REMOTE_ADDR']变量?

如何伪造$_SERVER['REMOTE_ADDR']变量?
EN

Stack Overflow用户
提问于 2011-02-23 22:58:45
回答 3查看 80.3K关注 0票数 68

是否有可能伪造或劫持$_SERVER['REMOTE_ADDR']变量的内容?

我想用以下内容伪造一个请求:

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

我怎么用PHP做到这一点呢?CURL能以某种方式做到这一点吗?

EN

回答 3

Stack Overflow用户

发布于 2011-02-23 23:03:06

远程地址不是出于礼貌而添加的地址,它是在IP协议中路由数据包的,所以如果您使用send a package with a fake address,您将不会收到响应,而且由于您正在谈论的是HTTP请求,它通过TCP连接传递,这需要几个IP数据包(以及匹配的响应)来设置:

不,这是不可能的(当然,除了通过环回接口从同一主机发送请求之外)。

票数 18
EN

Stack Overflow用户

发布于 2011-02-23 23:12:18

如果通过代理浏览,$_SERVER['REMOTE_ADDR']可能会设置为代理的IP地址,而不是最终用户的IP地址。

在这种情况下,您还可以使用其他标头:此页面提供了一个函数,用于检查所有可能性,并提供最有可能是最终用户的地址:

http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html

但是,如果用户使用配置错误的代理,或恶意代理,或旨在匿名最终用户的代理,则您将无法保证除REMOTE_ADDR之外的任何标头(这只能将您引导至代理)。

如果您的最终用户通过HTTPS浏览,那么REMOTE_ADDR将始终是他的IP地址;您不能使用通过HTTPS的代理转发。因此,绝对确定他的地址的一种方法是让他用HTTPS打开你的网站。

票数 9
EN

Stack Overflow用户

发布于 2011-02-23 23:05:51

这是由apache或您正在使用的任何服务器设置的变量。你不能欺骗它。您可以在脚本的开头运行$_SERVER['REMOTE_ADDR']='127.0.0.1';,但我怀疑这不是您想要做的事情

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

https://stackoverflow.com/questions/5092563

复制
相关文章

相似问题

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