[英]How to allow or deny remote connections in Python's SocketServer?
我正在创建一个非常简单的Vega可视化查看器:这是一个文件模块 ,可提供基本HTML页面,该页面仅包含Vega图形和更新的HTML5 EventSource
。 用户(me)通过ssh在Python shell中工作,创建了一个代表查看器的对象,该对象打印其IP和端口供用户粘贴到其(my)Web浏览器中。 该HTTP服务器不提供文件或不接收来自客户端的输入,因此我看不到任何安全问题。
我不确定的部分是如何设置(host, port)
,以便我的Web浏览器可以找到在远程Python中运行的HTTP服务器。 我整个下午都在进行实验,不知道是否误解了应该发生的情况,还是我使用的服务器是否更改了访问策略。
这是一个最小的示例:
import SimpleHTTPServer
import SocketServer
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer((host, port), Handler)
print(httpd.server_address)
httpd.serve_forever()
如果我在本地运行此文件并希望确保外部查看者无法访问它,我是否将host
设置为"127.0.0.1"
因为这意味着客户端必须将其作为 127.0.0.1访问,这只能在本地进行? 在这种情况下, port
可以为0
以获取任何打开的端口。
如果我正在远程运行此服务器,以确保外部查看者可以访问它,请将host
设置为""
还是"0.0.0.0"
因为这意味着客户端可以将其作为访问服务器的任何地址来访问? 在这种情况下,我可能无法将port
设置为0
因为其中许多端口可能被阻止了,或者操作系统对此是否更聪明?
基本上,Python的SocketServer中的访问控制应该如何工作?
这是基本的TCP。 与Python无关。
如果您收听127.0.0.1,则只能在同一主机上运行的客户端可以连接。
如果您收听0.0.0.0,那么在防火墙允许的情况下,任何人都可以连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.