2017-03-01 49 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; };