ich eine Asynchron-Methode, die Httpclient verwendet:Wechsel von Httpclient zu Webclient, das Passwort im Klartext sendet
private static HttpClient client = new HttpClient(); //As pointed by @maccettura
private async Task<string> GetResult(Uri url, string user, string pass)
{
var PassArray = new UTF8Encoding().GetBytes(user + ":" + pass);
client.BaseAddress = url;
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(_passArray));
string result;
using (HttpResponseMessage response = await client.GetAsync(url))
using (HttpContent content = response.Content)
{
result = await content.ReadAsStringAsync();
}
return result;
}
Dass ich
synchrones WebClient zu ändern hatte private string GetResult(Uri url, string user, string pass)
{
using (var client = new WebClient())
{
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential(user, pass);
using (var stream = client.OpenRead(url))
using (var streamReader = new StreamReader(stream, Encoding.UTF8, true))
{
return streamReader.ReadToEnd();
}
}
}
Bin Kompromisse ich Sicherheit durch Einfacher Benutzername und Passwort senden? Wenn ja, gibt es eine Möglichkeit, die Sicherheit zu erhöhen? (Die URL ist eine Https-Adresse)
FYI, [Sie verwenden Httpclient falsch] (https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/). – maccettura
@maccettura Oooo ... Interessant. Vielen Dank! – Yasskier
Es ist die Verwendung von HTTPS, nicht die von Ihnen verwendete Bibliothek, die die Anmeldeinformationen schützt. Base64-Kodierung ist sowieso kein Schutz. – Crowcoder