whi*_*der 5 java security embeddedwebserver nanohttpd
我在我的本地桌面上运行Nano80tat 8080.我可以在浏览器中本地访问服务器http://localhost:8080/
.那部分按预期工作.
但是,我不希望我的邻居(或者更糟的是,世界)也能够访问它http://my.local.ip.add:8080/
.
如何将其限制为仅限本地主机访问,以便我是唯一一个可以看到这些页面由我本地运行的NanoHttpd实例提供服务的人?
NanoHttpd只是一个源文件:这是一个相关的剪辑:
/**
* Constructs an HTTP server on given hostname andport.
*/
public NanoHTTPD(String hostname, int port) {
this.hostname = hostname;
this.myPort = port;
setTempFileManagerFactory(new DefaultTempFileManagerFactory());
setAsyncRunner(new DefaultAsyncRunner());
}
/**
* Start the server.
* @throws IOException if the socket is in use.
*/
public void start() throws IOException {
myServerSocket = new ServerSocket();
myServerSocket.bind((hostname != null) ? new InetSocketAddress(hostname, myPort) : new InetSocketAddress(myPort));
Run Code Online (Sandbox Code Playgroud)
虽然我不能从这里尝试它,但似乎你可以通过构造服务器来实现你想要的效果new NanoHTTPD("localhost",8080)
- 因为这会导致绑定操作绑定到localhost上的端口(而不是使用通配符绑定)
更新:因为看起来人们还在阅读 - 偶尔也会热议:^) - 多年后我的袖手旁观答案,我想我会加上这个警告:如果出于安全原因你只绑定到localhost(即你"信任"在localhost上运行的东西,但是你想要阻止来自大型恶意Internet的连接,)记住绑定到localhost只意味着与NanoHttpd 的tcp连接必须有一个本地源地址 - 但它仍然可能是"本地"连接可以由远程坏人发起,使用主机上的其他软件作为跳板.例如,在同一主机上运行的配置错误的http代理可能会被欺骗,代表远程用户连接到" http:// localhost:8080 ".当然,限制对本地主机的连接访问是有帮助的,但要考虑上下文:如果要保护高价值资源 - 特别是如果您在同一主机上有其他可能受到危害的面向公众的服务 - 绑定localhost不能替代使用适当的加密身份验证.