Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| Properti | Nilai |
|---|---|
| ID Aturan | CA5405 |
| Judul | Jangan selalu melewati validasi token di delegasi |
| Kategori | Keamanan |
| Perbaikan bersifat merusak atau tidak merusak | Tidak terputus |
| Diaktifkan secara default di .NET 10 | Tidak |
| Bahasa yang berlaku | C# dan Visual Basic |
Penyebab
Panggilan balik yang ditetapkan ke AudienceValidator atau LifetimeValidator selalu mengembalikan true.
Deskripsi aturan
Dengan mengatur delegasi validasi penting TokenValidationParameter untuk selalu mengembalikan true, perlindungan autentikasi penting dinonaktifkan. Menonaktifkan perlindungan dapat menyebabkan validasi token yang salah dari penerbit atau token yang kedaluwarsa.
Untuk informasi selengkapnya tentang praktik terbaik untuk validasi token, lihat pustaka wiki.
Cara memperbaiki pelanggaran
- Tingkatkan logika delegasi sehingga tidak semua jalur kode mengembalikan
true, yang secara efektif menonaktifkan jenis validasi tersebut. - Melempar
SecurityTokenInvalidAudienceExceptionatauSecurityTokenInvalidLifetimeExceptionpada kasus kegagalan ketika Anda ingin gagal validasi agar kasus lain berhasil dengan mengembalikantrue.
Kapan harus menekan peringatan
Dalam beberapa kasus tertentu di mana Anda menggunakan delegasi untuk pengelogan tambahan dan itu untuk jenis token di mana jenis validasi tertentu tidak diperlukan, mungkin masuk akal untuk menekan peringatan ini. Sebelum Anda menonaktifkan validasi ini, pastikan Anda telah sepenuhnya memikirkan implikasi keamanan. Untuk informasi tentang kompromi, lihat wiki pustaka untuk validasi token.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA5405.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Contoh kode semu
Pelanggaran
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Solusi
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) =>
{
// Implement your own custom audience validation
if (PerformCustomAudienceValidation(audiences, token))
return true;
else
return false;
};
}
}