首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制java-websocket对本地主机的访问

限制java-websocket对本地主机的访问
EN

Stack Overflow用户
提问于 2014-01-06 00:08:39
回答 2查看 1.2K关注 0票数 2

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

出于安全考虑,我想限制对本地机器的访问。

是否有一种方法可以通过IP或主机名限制访问服务器?

如果是这样的话,是怎么做的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-06 00:10:35

您应该指定侦听ip到127.0.0.1,这样就不可能从外部连接。

编辑

查看绑定使用的示例ChatServer.java

代码语言:javascript
复制
ChatServer s = new ChatServer( port );

该类实现两个构造函数:

代码语言:javascript
复制
  public ChatServer( int port ) throws UnknownHostException {
            super( new InetSocketAddress( port ) );
    }

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

因此,您还可以使用inetSocketAddress调用服务器。创建绑定到localhost的一个:

代码语言:javascript
复制
new ServerSocket(9090, 0, InetAddress.getByName(null));

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

因此取代

代码语言:javascript
复制
ChatServer s = new ChatServer( port );

使用

代码语言:javascript
复制
InetSocketAddress myLocalSocket = new ServerSocket(9090, 0, InetAddress.getByName(null));
ChatServer s = new ChatServer( myLocalSocket );

在你的例子中,它应该是有效的。

票数 5
EN

Stack Overflow用户

发布于 2014-03-28 18:36:37

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

本地主机WebSocket的连接可以由托管在任何外部网站上的JavaScript进行。如果您的本地用户被欺骗访问远程站点,则该站点承载的HTML/JavaScript将能够与您的本地web套接字进行通信。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20940898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档