C#WebClient仅允许加密连接

时间:2017-03-01 14:00:23

标签: c# .net

以下是我的应用程序的示例代码,它将一些数据上传到服务器并读取响应。 如何判断连接是否安全?即使链接是否加密(无论https前缀)

,此代码仍会运行
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)上运行网络服务器,但保持连接不受保护,例如" classic" 80号港口。

我已经注册了ServicePointManager.ServerCertificateValidationCallback,我检查了证书签名,但是如果根本没有证书,它显然没有被执行。

MITM攻击的完美情况。

1 个答案:

答案 0 :(得分:0)

如果您没有证书并且想要访问HTTPS-URL,则只需在您的Callback方法中返回true。这意味着证书已经过验证。

    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };