當我在本地主機上監聽端口時,Windows將彈出一個對話框,用戶必須在其中將我的程序添加到防火牆例外列表中。這很煩人,並且需要用戶可能沒有的管理員權限。爲什麼本地主機連接被防火牆阻擋?
爲什麼Windows爲環回連接(127.0.0.1)執行此操作,並且有一些技巧可以防止出現這種情況?
當我在本地主機上監聽端口時,Windows將彈出一個對話框,用戶必須在其中將我的程序添加到防火牆例外列表中。這很煩人,並且需要用戶可能沒有的管理員權限。爲什麼本地主機連接被防火牆阻擋?
爲什麼Windows爲環回連接(127.0.0.1)執行此操作,並且有一些技巧可以防止出現這種情況?
答案是註明:中
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Loopback, Port);
代替
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, Port);
的監聽套接字。乍一看,這似乎阻止了任何防火牆警告,並且不需要將任何規則添加到防火牆中。但是我必須進行一些更廣泛的測試,以確保它適用於所有Windows配置。
它這樣做是爲了防止人們做壞事,如果一個程序通過本地主機訪問某些東西,它可能會以比它可能通過非本地主機執行的操作更高的權限執行操作。
例子:
有沒有辦法避免彈出,否則會有什麼用處呢?如果您的程序具有管理權限,則可以添加防火牆例外規則,從而阻止此彈出窗口。
如果在出現對話時單擊「拒絕」,我的程序仍會接受本地傳入連接,因此彈出窗口對於防止剛剛提到的任何風險完全無用。 – Muis
這表明你的問題是基於錯誤的假設。你沒有聽本地主機,你聽任何'='0.0.0.0' =所有接口。 – BatteryBackupUnit
@BatteryBackupUnit你是對的,但我沒有意識到這一點,因爲'任何'是默認的 – Muis