当前位置: 首页 > 面试题库 >

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

谷梁英毅
2023-03-14
问题内容

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

我想伪造一个请求:

$_SERVER['REMOTE_ADDR']='127.0.0.1';

我如何用PHP做到这一点?CURL可以这样做吗?


问题答案:

我认为您的意思是远程伪造。简短的答案是可以。关于它多么容易的长答案取决于您要伪造它的方式。

如果您不关心接收响应,那么它就像打开原始套接字到目标并伪造源IP地址一样简单。我不确定在PHP中是否真的容易实现,因为所有PHP的套接字实现都在TCP级别或更高级别。但我确信这是可能的。现在,由于您不受网络控制,因此响应不会返回给您。因此,这意味着您(无论如何)都无法(通过可靠的方式)通过伪造的TCP头创建TCP连接(因为syn-
ack确实通过要求双向通信来防止这种情况)。

但是,如果您可以破坏IP所在的网关,则可以执行任何操作。因此,如果您破坏了与计算机连接的wifi路由器,则可以装作是那台计算机,而服务器不会告诉您区别所在。如果您破坏了ISP的出站路由器,则可以(至少在理论上)假装是计算机,而服务器则无法分辨出差异。

但是,127.0.0.1如果您实际上损害了本地计算机/服务器,则只能在TCP下伪造回送地址。那时真的重要吗?

重要

如果您使用框架来访问此信息,请 绝对确保 它不检查X-HTTP-FORWARDED- FOR标题!否则,伪造IP地址很简单。例如,如果您使用的是ZendFramework的Zend_Controller_Request_Http::getClientIp方法,请绝对确保将其false作为参数传递!否则,有人只需要发送HTTP标头即可:X-Http- Forwarded-For: 127.0.0.1它们现在看来是本地的!在这种情况下,使用框架而不了解后端的工作原理确实很糟糕。



 类似资料:
  • 问题内容: 信任安全吗?是否可以通过更改请求标头或类似的内容来代替? 这样写安全吗? 问题答案: 是的,这很安全。它是TCP连接的源IP,不能通过更改HTTP标头代替。 您可能要担心的一种情况是,如果您在反向代理后面,则REMOTE_ADDR将始终是代理服务器的IP,而用户IP将在HTTP标头中提供例如X-Forwarded-For。但是对于正常使用情况,读取REMOTE_ADDR是可以的。

  • 问题内容: 我正在为进行AJAX调用的JavaScript写一些QUnit测试。 为了隔离,我重写以将AJAX调用的参数数组写入变量。这可以测试方法如何使用AJAX函数,但是我很难测试 从位于http://api.jquery.com/load/的文档中: 当检测到成功的响应时(即,当textStatus为“成功”或“未修改”时),. load()将匹配元素的HTML内容设置为返回的数据。 因此,

  • 我们中的两个人在不同的GIT分支中制作了一个迁移脚本。现在,我已经拉动了源开发分支,并更正了 GIT 合并问题,并将我的迁移脚本重命名为最后一个。因此,数据库的新初始化和从开发分支的版本迁移数据库将是可以的。 然而,我的本地测试数据库中有很多数据,所以我手动应用了我在GIT中引入的新迁移脚本。然而,我不能让flyway认为,一切都很好。 那么,我如何才能伪造迁移? 当我尝试迁移时,我收到以下错误:

  • 问题内容: 我最近在Python中开发了一个围绕某些ORM文档对象命名的类,以透明地向其中添加一些功能,而不用任何方式更改其接口。 我对此只有一个问题。假设我包裹了一些物体。呼叫将返回,因为确实是的一个实例。 有没有办法伪造Python中的对象类型以具有相同的调用返回? 问题答案: 测试对象的 类型 通常是python中的反模式。在某些情况下,测试对象的 “鸭子类型” 是有意义的,例如: 但是,即

  • 问题内容: 所有, 我正在尝试在一些古老的Java代码中进行一些单元测试(无接口,无抽象等)。 这是一个使用ServletContext的servlet(我假设它是由Tomcat设置的),并且它的数据库信息在web.xml / context.xml文件中设置。现在,我已经弄清楚了如何制作Fake ServletContext,但是代码已经 遍布整个地方(因此替换它是不可行的)。我需要找到一种方法

  • 如果我们有一个无法检测到的后门,没有找到一种有效的方法将这个后门传递给目标计算机。在现实生活中,如果我们要求目标下载并运行可执行文件,它可能不会下载并运行它,所以我们现在研究如何伪造更新,以便用户希望下载并安装可执行文件。 在我们处于连接中间之前,此方案将起作用。例如,当通过移动电话重定向流量,实施中间人攻击或使用虚假网络时。 在本节中,我们将介绍ARP中毒的DNS欺骗。这意味着我们与目标机器位于