2017-03-01 91 views
0

下面是我的應用程序的示例代碼,它將一些數據上傳到服務器並讀取響應。 如何判斷連接是否安全?此代碼,即使該鏈接是否被加密(無論HTTPS前綴)C#WebClient只允許加密連接

using (WebClient client = new WebClient()) 
{ 


    byte[] response = client.UploadValues("https://mytestserver.com", new NameValueCollection() { { "Abc", "def" } }); 

    result = System.Text.Encoding.UTF8.GetString(response); 
} 

我的意思,是有人可能會運行在443端口(HTTPS)的Web serwer,但留下的連接不是固定在所有程像「經典」端口80.

我已經註冊了一個ServicePointManager.ServerCertificateValidationCallback,我檢查證書籤名,但顯然它沒有被執行,如果根本沒有證書。

MITM攻擊的完美情況。

+2

目前還不清楚「無論https的前綴」是什麼意思。如果它是https,那肯定是安全的?你能否澄清你的問題? –

+0

爲什麼不檢查url是否以https開頭,如果不是,則拋出異常? – GregaMohorko

+0

請看我更新的問題 – user3175253

回答

0

如果您還沒有證書,並且您想要訪問HTTPS-URL,則只需在回調方法中返回true即表示證書已通過驗證。

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };