2015-04-21 4 views
1

В приложении .NET 2.0 Forms я использую WebClient для связи с веб-сервером через SSL. В сообщении пароль отправляется на сервер в параметрах HTTP GET или POST (это означает, что он помещен в WebClient.QueryString).Как использовать SSL при использовании WebClient?

Следует избегать передачи пароля в открытом виде (очевидно). Прямо сейчас, и то, что я сделал до сих пор, это предположить, что просто убедившись, что аргумент URI для различных функций, служба WebClient начинается с «https: //» достаточно:

// 'path' is something like "www.example.com/example.php" 
var uri = new Uri(string.Format("https://{0}", path)); 
webCl.QueryString = new NameValueCollection(); 
webCl.QueryString.Add("passwd", "my_password"); 
var reply = webCl.DownloadString(uri); 

Но я не уверен. Достаточно ли этого, чтобы гарантировать, что никакая чистая передача параметров GET или POST (для UploadString()) не происходит, если соединение не зашифровано? Мое предположение заключается в том, что передача параметров HTTP не произойдет, если квитирование SSL не удастся, и что квитирование SSL может быть выполнено только в том случае, если шифрование включено.

ответ

1

Ваше предположение верно. Если вы заставляете базовый URI быть «https», тогда трафик запроса будет проходить через зашифрованную ссылку SSL. Вы также можете использовать свойство WebClient.BaseAddress.

В частности, вы можете указать конкретный протокол безопасности, который вы разрешаете. В частности, после недавних проблем безопасности SSL 3 вы можете разрешить только TLS.

System.Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls 

На соответствующую записку, вы, конечно, хотите поставить попробовать/поймать вокруг вызова DownloadString, чтобы убедиться, что вы обрабатывать ошибки.

Смежные вопросы