我正在创建一个非常简单的Vega可视化查看器:它是一个one file module,它提供一个只包含Vega图形和HTML5 EventSource
更新的基本HTML页面。用户(我)通过ssh在Python shell中工作,创建一个表示查看器的对象,该对象打印其IP和端口供用户粘贴到他们的(我的)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 中的访问控制如何实现?
答案 0 :(得分:1)
这是基本的TCP。与Python无关。
如果您在127.0.0.1上收听,则只有在同一主机中运行的客户端才能连接。
如果你在0.0.0.0听,任何人都可以连接,防火墙允许。