2017-03-01 17 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)上のウェブserwerを実行しますが、残すことができる誰かがまったく確保されていない場合であっても動作します"古典的な"ポート80のようなものです。

証明書の署名をチェックするServicePointManager.ServerCertificateValidationCallbackを登録しましたが、証明書がまったくないと実行されないことは明らかです。

MITM攻撃に対する完璧な状況。

+2

"httpsのプレフィックスに関係なく"という意味が明確ではありません。それがhttpsなら、確かに安全でしょうか?あなたの質問を明確にしてください。 –

+0

URLがhttpsで始まるかどうかをチェックし、そうでない場合は例外をスローします。 – GregaMohorko

+0

私の更新された質問 – user3175253

答えて

0

証明書がなく、HTTPS-URLにアクセスする場合は、コールバックメソッドでtrueを返します。つまり、証明書が有効であることを意味します。

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 
関連する問題