Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Playframework从服务器获取客户端IP,但不是从Cookie获取_Java_Ip_Netty_Playframework 2.2_Server - Fatal编程技术网

Java Playframework从服务器获取客户端IP,但不是从Cookie获取

Java Playframework从服务器获取客户端IP,但不是从Cookie获取,java,ip,netty,playframework-2.2,server,Java,Ip,Netty,Playframework 2.2,Server,我想获得客户端IP。 基于这个IP,我想给一个访问应用程序。 目前,我正在使用以下代码从Cookie获取IP: /** * Gets the ip. * * @return the ip */ public static String getIP() { return Request play.mvc.Controller.request().remoteAddress(); } 但它是不安全的,因为用户可以很容易地更改它 所以我想从服务器连接中获取物理IP地址,而不是从coo

我想获得客户端IP。 基于这个IP,我想给一个访问应用程序。 目前,我正在使用以下代码从Cookie获取IP:

/**
 * Gets the ip.
 *
 * @return the ip
 */
public static String getIP() {
    return Request play.mvc.Controller.request().remoteAddress();
}
但它是不安全的,因为用户可以很容易地更改它

所以我想从服务器连接中获取物理IP地址,而不是从cookie中获取这个地址


我怎样才能做到这一点?请帮忙。

这不是饼干。。。无论如何,我能想到的最简单的解决办法是。。。将应用程序隐藏在某个轻型HTTP服务器下作为代理,并使用其访问限制规则,好处如下:

  • light server不应该成为瓶颈,因为它专门用于此项工作
  • 黑客试图绕过这些限制,可能是因为他们意识到了一些技巧和黑客
  • 被拒绝的IP甚至不会进入你的应用程序,所以你在节省资源
  • 它通常有助于解决其他几个任务
最后,服务器以特殊的方式处理转发的IP,即,当使用curl处理标题时,Apache将转发如下列表:

1.2.3.4123.123.123.123


所以不管怎样,你都可以捕获坏的IP…

我已经测试过了。我可以在linux shell中使用以下命令轻松更改ip地址:
curl--header“X-Forwarded-For:1.2.3.4”“localhost:9000”
您是在客户端/服务器之间进行相互身份验证还是在受信任/封闭的环境中运行?基于客户端IP的身份验证/访问控制听起来可能会给您带来麻烦。欺骗HTTP头很容易,而且几乎可以在所有其他级别上欺骗。我曾考虑过这个解决方案,但不确定。谢谢你的帮助。我将实施它。