问题描述
有人知道我在哪里可以找到描述Windows上CefSharp.BrowserSubprocess.exe实际使用的端口和协议的文档(或实际资源)?加载CefSharp嵌入式浏览器后,将显示Windows防火墙提示权限对话框。这个防火墙提示非常令人恐惧,如果我们的安装程序自动创建规则,那就更好了。但是我只想打开需要的东西。
我看到提示用户时创建的规则基本上打开了通过 any 端口通过TCP和UDP进行的所有通信。但是似乎唯一需要的通信是在同一框上的主exe和CefSharp.BrowserSubprocess之间。 (为什么打开任何个外部端口?)
但是,有趣的是,即使您不允许创建防火墙规则,嵌入式浏览器仍然可以正常工作-并且子进程仍会启动并且似乎可以正常执行(从在任务管理器中观察)。
我在这里https://github.com/cefsharp/CefSharp/issues/3075上发布了这个问题,并在这里引用了https://magpcss.org/ceforum/index.php,但是我对这个主题的问题被新闻组管理员拒绝为“不在主题”。
我还尝试构建并运行CefSharp代码(特别是CefSharp.Wpf.Example
),但该应用程序在加载时崩溃。我想我需要进一步调试。从源代码来看,我很难确定实际在何处调用了TCP或UDP套接字侦听代码。
总而言之,我试图避免这种提示(通过在安装时添加防火墙条目),但是我不想通过打开比需要更多的内容而招致更多风险。
对此进行更多思考,如果默认行为是为要执行代码的进程打开外部端口,则这似乎是一个潜在的安全问题。也许这在某种程度上抵消了Chromium网络服务的进程隔离的安全性目标?
解决方法
根据@amaitland的指导,我们找到了两种可能的解决方案:
- 在安装时(具有管理员权限),为mDNS创建一个Windows防火墙条目,该条目与使用UDP端口5353的
CefSharp.BrowserSubprocess.exe
绑定。 - 使用以下方法禁用
mDNS
:settings.CefCommandLineArgs.Add("disable-features","WebRtcHideLocalIpsWithMdns");
此解决方案无效