Java 如何从客户端更改HttpServletRequest中的IP?

Java 如何从客户端更改HttpServletRequest中的IP?,java,security,ip,httprequest,spoofing,Java,Security,Ip,Httprequest,Spoofing,服务器代码: String ip = request.getRemoteAddr() if(ip='127.0.0.1') System.out.print("hello"); 现在我正在从我的机器访问那个远程站点,很明显我的IP地址应该是192.*. 我如何才能欺骗服务器(IP欺骗),使服务器始终为我的请求打印“hello”?编辑问题的新答案: 你不能用Java。如果您需要假装请求来自127.0.0.1(服务器本身),那么您需要侵入操作系统的网络堆栈 旧答案

服务器代码:

  String  ip =  request.getRemoteAddr()
     if(ip='127.0.0.1')
        System.out.print("hello");
现在我正在从我的机器访问那个远程站点,很明显我的IP地址应该是
192.*.


我如何才能欺骗服务器(IP欺骗),使服务器始终为我的请求打印“hello”?

编辑问题的新答案: 你不能用Java。如果您需要假装请求来自127.0.0.1(服务器本身),那么您需要侵入操作系统的网络堆栈

旧答案: 客户端用于连接到服务器的IP地址取决于它使用的网络接口以及连接到此网络接口的网络类型。 例子: 如果您的客户机是笔记本电脑,它很可能只有一个网络接口。此网络接口使用192.168.1.10作为其IP地址(例如,从路由器上的DHCP分配)作为其内部IP地址。您的路由器也可能通过IP连接到internet,例如20.20.20.20,它通过NAT与连接的设备共享IP。 如果使用此连接到本地网络上的服务器,则服务器看到的客户端IP地址将为192.168.1.10;如果您连接的服务器不在本地网络上,而是在internet上的某个位置,则您的客户端的IP(服务器看到的)将为20.20.20.20


因此,您不能让您的客户机假装使用127.0.0.1(如果服务器和客户机在同一台机器上运行,那么您的客户机很可能使用127.0.0.1)。当然也有像IP欺骗这样的技术,你假装拥有与实际不同的IP,但这是完全不同的问题。

ya实际上我想做IP欺骗。在服务器端,我有一个类似IP是否为“192.168.xx.xx”的检查,所以我如何才能欺骗该IP即使我的IP为“192.168.yy.yy”,您将不得不侵入操作系统的网络堆栈,以将发送IP替换为您想要欺骗的IP(在每个IP包的头中)。这当然会造成客户端不再从服务器获得响应的问题……简言之,使用类似三方握手的方式,所以我可以说不可能破解它吗?您无法真正抵御IP欺骗。如果我假装是别人寄来的包裹,你几乎无法注意到这一点。这就是为什么会有像身份验证(你要求我证明我就是我所声称的那个人)和IPsec(VPN)这样的机制,其中对数据包头进行签名以防止修补。握手是基于身份验证的机制。从技术上讲,他们并不阻止IP欺骗,但他们让你注意到。我已经编辑了我的问题。我想要一种打印
hello
任何方式的方式。