限制对localhost的java-websocket访问

时间:2014-01-06 00:08:39

标签: java localhost restrict java-websocket

我正在编写一个java-websocket服务器作为加密货币客户端。

出于安全原因,我想限制对本地计算机的访问。

有没有办法通过IP或主机名限制对java-websocket服务器的访问?

若然,怎么样?

2 个答案:

答案 0 :(得分:5)

您应该将您的收听IP指定为 127.0.0.1 ,因此无法从外部进行连接。

修改

查看示例ChatServer.java,绑定发生在

ChatServer s = new ChatServer( port );

该类实现了两个构造函数:

  public ChatServer( int port ) throws UnknownHostException {
            super( new InetSocketAddress( port ) );
    }

    public ChatServer( InetSocketAddress address ) {
            super( address );
    }

所以你也可以使用inetSocketAddress调用服务器。创建一个绑定到localhost的文件:

new ServerSocket(9090, 0, InetAddress.getByName(null));

然后使用它而不仅仅是端口调用服务器。

所以替换

ChatServer s = new ChatServer( port );

InetSocketAddress myLocalSocket = new ServerSocket(9090, 0, InetAddress.getByName(null));
ChatServer s = new ChatServer( myLocalSocket );

在你的例子中,它应该工作。

答案 1 :(得分:3)

Max接受的答案将阻止从外部连接到您的套接字,但是您应该考虑另一种攻击媒介。

可以通过任何外部网站上托管的JavaScript建立与localhost WebSocket的连接。如果您的本地用户被欺骗访问远程站点,该站点托管的HTML / JavaScript将能够与您的本地Web套接字进行通信。

您可以通过限制基于Origin头值的连接来缓解这种情况,这将指示生成WebSocket连接请求的脚本源地址。请记住,Origin标头是可选的,您依靠浏览器将其适当地设置到脚本的来源。