2014-01-09 73 views
0

我已使用struts2创建了一个站点。 我在服务器端放了一个条件IPHttpServletRequest),如果请求来自特定的IP,打印“hello word”,说"127.0.0.1"如何从客户端更改HttpServletRequest中的IP?

因此,任何一个(HACK)都可以通过在客户端更改中的IP来通过该条件。

如果是的话,我想知道我怎么能通过这个检查,即使我从我的系统访问这个网站有IP例如:192.168.xx.xx.

我可以覆盖IP"127.0.0.1"HttpServletRequest从客户端?

编辑:

onserver方:

String ip = request.getRemoteAddr() 
    if(ip='127.0.0.1') 
     System.out.print("hello"); 

客户端IP:在每个请求192.168.xx.xx

我怎样才能让IP欺骗从客户端传递'127.0.0.1'?并打印hello

回答

1

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

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

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

+0

雅实际上我想做IP欺骗。 在服务器端,我有一个检查,如果IP是“192.168.xx.xx” 那么我怎么能欺骗,即使我的IP IP地址是“192.168.yy.yy” – HybrisFreelance

+0

你将不得不侵入你的操作系统的网络堆栈以将发送IP替换为您想要欺骗的IP(在每个IP数据包的标头中)。这当然会造成客户端不再从服务器获得响应的问题... – SirRichie

+0

总之,使用像三次握手,所以我可以说是不可能的破解这个? – HybrisFreelance