我正在开发一个 java 项目,我们有一个服务器和一个客户端应用程序。服务器接受连接并通过套接字编程将请求的数据发送给客户端。
一切正常,但是当上传并在服务器上工作时,我会从未知 ip 获得连接。并且此应用程序将在许多国家/地区使用,因此不会将特定 IP 列入白名单。
有没有办法禁止/拒绝这些 ip,以便服务器使用套接字只接受来自我的应用程序的连接。请求连接到服务器时是否可以发送自定义数据,以便它告诉服务器只接受这些连接。
您描述的选择性接受属于身份验证和授权的范围。您需要将客户端连接到:
我建议你看看像Apache Shiro这样的库,它会为你做一些繁重的工作。
接受入站连接后,您可以Socket.getInetAddress()
在返回的 Socket 上使用来检索并随后验证 IP。
如果 IP 不被允许,则使用Socket.close()
关闭不需要的连接。
编辑:
验证当然可以基于 IP 以外的东西。连接打开后,您可以使用其流传输任意数据以识别客户端,例如在身份验证失败后关闭连接。
但是,这样做您应该考虑有人能够拦截您的通信的可能性。换句话说,使用安全连接是有意义的。
我不知道在打开(接受)连接之前可以在 Java 中对客户端进行身份验证的方法。