【发布时间】:2020-09-05 20:57:58
【问题描述】:
有谁知道我在哪里可以找到描述 Windows 上 CefSharp.BrowserSubprocess.exe 实际使用哪些端口和协议的文档(或实际来源)?加载 CefSharp 嵌入式浏览器时,会显示一个 Windows 防火墙提示权限对话框。这个防火墙提示相当可怕,如果我们的安装程序自动创建规则会更好。但我想只打开需要的东西。
我看到提示用户时创建的规则基本上打开了所有通过 TCP 和 UDP 在 any 端口上的通信。但似乎唯一需要的通信是在同一个盒子上的主 exe 和 CefSharp.BrowserSubprocess 之间。 (为什么要打开任何个外部端口?)
然而,有趣的是,即使您不允许创建防火墙规则,嵌入式浏览器似乎也可以工作 - 并且子进程仍会启动并且似乎正在正确执行(来自在任务管理器中观察)。
我在此处发布了此问题:https://github.com/cefsharp/CefSharp/issues/3075,并在此处被提及:https://magpcss.org/ceforum/index.php,但我关于此主题的问题被新闻组管理员拒绝为“离题”。
我还尝试构建和运行 CefSharp 代码(特别是 CefSharp.Wpf.Example),但应用程序在加载时崩溃了。我想我需要更多地调试这个。查看源代码,我很难确定实际调用了 TCP 或 UDP 套接字侦听代码的位置。
总之,总而言之,我试图避免这个提示(通过在安装时添加防火墙条目),但我不想因为打开过多而招致更多风险。
更多地反映这一点,如果默认行为是为其工作是执行代码的进程打开外部端口,这似乎是一个潜在的安全问题。也许这以某种方式抵消了 Chromium 网络服务的进程隔离的安全目标?
【问题讨论】:
-
根据我的评论github.com/cefsharp/CefSharp/issues/3075#issuecomment-597299282,所有网络都是由一个单独的过程完成的。这与 Chrome/Chromium 的行为相同。如果您查看任务管理器,您会看到带有 --type=utility 的 Chrome.exe 实例。 “如果默认行为是为一个其工作是执行代码的进程打开外部端口,这似乎是一个潜在的安全问题”是什么意思?网络服务旨在仅执行网络请求。你有没有查看谷歌浏览器打开了哪些端口?
-
如果您只想打开设置的端口,那么您需要确定您将允许哪些功能。 http/https/webrtc/websockets等
-
查看 chromium.org/developers/technical-discussion-groups 获取 chromium 讨论组列表,可能 net-dev 是提问的地方
-
谢谢@amaitland。我了解 CefSharp 的运行方式与 Chrome/Chromium 类似。但是 Chrome 不需要打开入站防火墙端口。当端口打开时,它们允许接收和执行来自其他计算机的入站请求。这是一个潜在的问题。如果只需要在托管 CefSharp 嵌入式浏览器的进程和 CefSharp.BrowserSubprocess.exe 之间进行通信,我想我不清楚这是否真的需要。 WebSockets 似乎不需要打开额外的端口。我想我不知道究竟是什么代码触发了防火墙提示
-
请使用 CEF 示例应用程序进行测试。您会看到该行为不是 CefSharp 特定的。 NetNamedPipeBinding 的使用是 CefSharp 特定的,应该排除这种情况。我对入境港口感到困惑。我希望您需要允许 80、443 用于出站,也许还有其他一些端口,我将从这些开始。正如我所说的那样,防火墙提示并不意外github.com/cefsharp/CefSharp/issues/3075#issuecomment-597299282
标签: sockets cefsharp chromium-embedded