İçeriğe geç

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.

[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());
}

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.

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ğru
app.MapGet("/verificationunits/list", HandleAsync).RequireAuthorization("devices");
app.MapGet("/health", () => "ok").AllowAnonymous();