Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Property | Värde |
---|---|
Regel-ID | CA5359 |
Title | Inaktivera inte certifikatverifiering |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Återanropet som tilldelas till ServicePointManager.ServerCertificateValidationCallback returnerar true
alltid .
Ett certifikat kan hjälpa dig att autentisera serverns identitet. Klienter bör verifiera servercertifikatet för att säkerställa att begäranden skickas till den avsedda servern. Om alltid ServicePointManager.ServerCertificateValidationCallback returnerar true
godkänns som standard alla certifikat för alla utgående HTTPS-begäranden.
- Överväg att åsidosätta certifikatverifieringslogik för specifika utgående HTTPS-begäranden som kräver anpassad certifikatverifiering, i stället för att åsidosätta den globala ServicePointManager.ServerCertificateValidationCallback.
- Tillämpa anpassad valideringslogik på endast specifika värdnamn och certifikat, och kontrollera i övrigt att uppräkningsvärdet SslPolicyErrors är
None
.
Om flera ombud är kopplade till ServerCertificateValidationCallbackrespekteras endast värdet från den senaste delegaten, så det är säkert att ignorera varningar från andra ombud. Du kanske vill ta bort de oanvända ombuden helt och hållet.
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5359
// The code that's violating the rule is on this line.
#pragma warning restore CA5359
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5359.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
using System.Net;
class ExampleClass
{
public void ExampleMethod()
{
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, error) => { return true; };
}
}
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
class ExampleClass
{
public void ExampleMethod()
{
ServicePointManager.ServerCertificateValidationCallback += SelfSignedForLocalhost;
}
private static bool SelfSignedForLocalhost(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
return true;
}
// For HTTPS requests to this specific host, we expect this specific certificate.
// In practice, you'd want this to be configurable and allow for multiple certificates per host, to enable
// seamless certificate rotations.
return sender is HttpWebRequest httpWebRequest
&& httpWebRequest.RequestUri.Host == "localhost"
&& certificate is X509Certificate2 x509Certificate2
&& x509Certificate2.Thumbprint == "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
&& sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors;
}
}
Feedback om .NET
.NET är ett öppen källkod projekt. Välj en länk för att ge feedback: