C#网络客户端仅允许加密连接

C#网络客户端仅允许加密连接,c#,.net,C#,.net,下面是我的应用程序的示例代码,它将一些数据上传到服务器并读取响应。 如何判断连接是否安全?即使链接是否加密,此代码也会运行(无论https前缀如何) 我的意思是,有人可能会在端口443(https)上运行web服务器,但会让连接像“经典”端口80一样完全不安全 我已经注册了一个ServicePointManager.ServerCertificateValidationCallback,在这里我检查了证书签名,但是如果根本没有证书,那么它显然不会被执行 MITM攻击的最佳情况。如果您没有证书并且

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

我的意思是,有人可能会在端口443(https)上运行web服务器,但会让连接像“经典”端口80一样完全不安全

我已经注册了一个ServicePointManager.ServerCertificateValidationCallback,在这里我检查了证书签名,但是如果根本没有证书,那么它显然不会被执行


MITM攻击的最佳情况。

如果您没有证书并且希望访问HTTPS-URL,只需在回调方法中返回true。这意味着证书已验证

    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

不清楚您所说的“不考虑https前缀”是什么意思。如果是https,它肯定会安全吗?请澄清您的问题好吗?为什么不检查url是否以https开头,如果不是,则抛出异常?请查看我的更新问题。您的问题仍然不够清楚!如果有人在端口443上运行非HTTPS服务器,并且有人试图使用URL以
HTTPS
开头连接到该服务器,他们将收到一个错误,而不是未加密运行的HTTP。
    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };