Missing authorization (ARCH320)
Anahtar dotnet.security.missing-authorize · Önem warning · Kategori security · CWE CWE-862
Yetkilendirme olmadan açığa çıkan bir API uç noktası, kimliği doğrulanmamış kullanıcıların korunan işlemlere erişmesine olanak tanır. Erişim denetimini açıkça uygulayın.
Hatalı
Bölüm başlığı “Hatalı”[ApiController][Route("api/v1/orders")]public class OrdersController : ControllerBase{ [HttpGet] public IActionResult GetAll() => Ok(_orders.All());}[ApiController][Authorize][Route("api/v1/orders")]public class OrdersController : ControllerBase{ [HttpGet] public IActionResult GetAll() => Ok(_orders.All());}Düzeltme
Bölüm başlığı “Düzeltme”Controller’lara [Authorize] ekleyin (veya global olarak varsayılan kimlik doğrulama politikası uygulayın); herkese açık uç noktaları [AllowAnonymous] ile açıkça işaretleyin.
Minimal API’ler
Bölüm başlığı “Minimal API’ler”Kendisinde ya da MapGroup’unda RequireAuthorization, handler’ında [Authorize] ve AllowAnonymous olmayan bir eşleme açıktır. Kural bunu yalnızca uygulama başka uçları yetkilendiriyorsa ve oturum açmış kullanıcı isteyen bir FallbackPolicy yoksa raporlar; bildiren tip başına bir kez, açık yolları sayarak. RequireAuthorization çağıran kendi uzantınız (ör. .RequireApiKey("partner")) koruma sayılır; .Produces(StatusCodes.Status401Unauthorized) beyanı sayılmaz - bir kontrolü belgeler, çalıştırmaz.
// Yanlışapp.MapGet("/verificationunits/list", HandleAsync);
// Doğruapp.MapGet("/verificationunits/list", HandleAsync).RequireAuthorization("devices");app.MapGet("/health", () => "ok").AllowAnonymous();