Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
HttpClientFactory'nin varsayılan günlüğü, tüm istek ve yanıt üst bilgilerinin çıkışını veren -level günlüklerini içerir Trace. yöntemi, RedactLoggedHeaders bu üst bilgilerden hangilerinin hassas olduğunu belirtmenize olanak tanır. Bu üst bilgilerin değerleri günlüğe kaydedilmez (üst bilgi adları kalır, ancak değerleri ile *değiştirilir). Daha önce, ile hiçbir üst bilgi duyarlı RedactLoggedHeadersolarak belirtilmemişse, tüm üst bilgiler hassas değil olarak kabul edilir ve tüm değerleri olduğu gibi günlüğe kaydedilirdi. .NET 9'dan başlayarak, belirtilmediği sürece, tüm üst bilgiler bunun yerine hassas kabul edilir ve tüm değerler varsayılan olarak yeniden oluşturulur.
Önceki davranış
Daha önce çağrılmadıysa RedactLoggedHeaders , tüm üst bilgiler olduğu gibi günlüğe kaydedilirdi. Çağrılırsa RedactLoggedHeaders , belirtilen üst bilgiler yeniden işlemden geçirilir ve diğer üst bilgiler olduğu gibi günlüğe kaydedilir.
services.AddHttpClient("default", ...); // 1
services.AddHttpClient("redacted-predicate", ...) // 2
.RedactLoggedHeaders(h => h.StartsWith("Auth") || h.StartsWith("X-"));
services.AddHttpClient("redacted-collection", ...) // 3
.RedactLoggedHeaders(new[] { "Authorization", "X-Sensitive", });
(1) Varsayılan— yeniden işlem yapılmadı
trce: System.Net.Http.HttpClient.default.ClientHandler[102]
Request Headers:
Authorization: NTLM blob
X-Sensitive: some, secret, values
X-Other: some, other, values
Cache-Control: no-cache
(2) Koşulla yeniden işlem
trce: System.Net.Http.HttpClient.redacted-predicate.ClientHandler[102]
Request Headers:
Authorization: *
X-Sensitive: *
X-Other: *
Cache-Control: no-cache
(3) Koleksiyon ile yeniden işlem
trce: System.Net.Http.HttpClient.redacted-collection.ClientHandler[102]
Request Headers:
Authorization: *
X-Sensitive: *
X-Other: some, other, values
Cache-Control: no-cache
Yeni davranış
.NET 9'dan başlayarak çağrılmazsa RedactLoggedHeaders tüm üst bilgiler yeniden oluşturulur. Çağrılırsa RedactLoggedHeaders , belirtilen üst bilgiler yeniden oluşturulur.
services.AddHttpClient("default", ...); // 1 <--- CHANGED
services.AddHttpClient("redacted-predicate", ...) // 2 <--- remains the same
.RedactLoggedHeaders(h => h.StartsWith("Auth") || h.StartsWith("X-"));
services.AddHttpClient("redacted-collection", ...) // 3 <--- remains the same
.RedactLoggedHeaders(new[] { "Authorization", "X-Sensitive", });
(1) Varsayılan— tümü yeniden uygulanır
trce: System.Net.Http.HttpClient.default.ClientHandler[102]
Request Headers:
Authorization: *
X-Sensitive: *
X-Other: *
Cache-Control: *
Sürüm kullanıma sunulmuştur
.NET 9 RC 1
Hataya neden olan değişikliğin türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
Üst bilgiler hassas olarak belirtilmezse, hassas bilgiler günlüklerde gösterilebilir. Bu değişiklik, günlüğün varsayılan olarak güvenli olmasını sağlar.
Önerilen eylem
Üst bilgileri günlüğe kaydetmek istiyorsanız, hangi üst bilgilerin hassas bilgiler içerebileceğini değerlendirin ve API'yi RedactLoggedHeaders kullanarak bunları açıkça belirtin. üst bilgileri istemci başına veya kullanarak tüm istemciler ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>)için genel olarak yeniden işlem yapabilirsiniz.
"Blok listesi" yaklaşımı yerine "allow-list" yaklaşımını kullanmayı göz önünde bulundurun.
Üst bilgilerinizin hiçbirinin hassas bilgiler içeremediğini düşünüyorsanız veya iç hata ayıklama amacıyla, döndüren falsebir temsilci geçirerek yeniden oluşturma işlemini tamamen devre dışı bırakabilirsiniz.
private static readonly string[] SafeToLogHeaders = ....;
private static readonly string[] SuperSecretHeaders = ....;
// Specify for all clients.
services.ConfigureHttpClientDefaults(b =>
b.RedactLoggedHeaders(h =>
Array.IndexOf(SafeToLogHeaders, h) == -1)); // log values only for SafeToLogHeaders
// "globally" specified RedactLoggedHeaders can be overriden per-name.
// NOTE: RedactLoggedHeaders completely replaces the previously specified check.
services.AddHttpClient("override")
.RedactLoggedHeaders(SuperSecretHeaders); // log all values except SuperSecretHeaders
// -OR-
// (dangerous) Disable header value redaction for all clients.
services.ConfigureHttpClientDefaults(b => b.RedactLoggedHeaders(_ => false));