我正在编写一个java服务器作为加密货币客户端。
出于安全考虑,我想限制对本地机器的访问。
是否有一种方法可以通过IP或主机名限制访问服务器?
如果是这样的话,是怎么做的?
发布于 2014-01-06 00:10:35
您应该指定侦听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 );在你的例子中,它应该是有效的。
发布于 2014-03-28 18:36:37
Max接受的答案将阻止从外部连接到您的套接字,但是您应该考虑另一个攻击向量。
本地主机WebSocket的连接可以由托管在任何外部网站上的JavaScript进行。如果您的本地用户被欺骗访问远程站点,则该站点承载的HTML/JavaScript将能够与您的本地web套接字进行通信。
您可以通过限制基于连接的Origin值来缓解这种情况,该值将指示生成WebSocket连接请求的脚本源地址。请记住,Origin是可选的,您正依赖浏览器将其适当设置为脚本的来源。
https://stackoverflow.com/questions/20940898
复制相似问题