Rate Limit Olmadan Login Endpoint
Parola denemesi ücretsiz kalınca

Captcha yoktu, 'içerideyiz' diye rate limit de yoktu. Dışarı açılınca aynı endpoint kaldı. Başarısız login sayısını kullanıcıya göstermiyorduk; log'da 401 yığını vardı. Yığın, bir listenin yürüdüğü anlamına gelir.
builder.Services.AddRateLimiter(options =>
{
options.RejectionStatusCode = StatusCodes.Status429TooManyRequests;
options.AddPolicy("login", context =>
{
var ip = context.Connection.RemoteIpAddress?.ToString() ?? "unknown";
return RateLimitPartition.GetFixedWindowLimiter(ip, _ => new FixedWindowRateLimiterOptions
{
PermitLimit = 8,
Window = TimeSpan.FromMinutes(1),
QueueLimit = 0
});
});
});
app.MapPost("/api/auth/login", (LoginRequest body) => Results.Ok())
.RequireRateLimiting("login");
IP eşiği tek başına NAT arkasını cezalandırır. Hesap kilidi (5 yanlış / 15 dk) ayrı. İkisini de koydum. 429'u login UI'da 'biraz sonra' diye gösteriyorum; 401 ile karıştırmıyorum. Limit yoksa parola uzayını tarayan kişi senin CPU'nu kullanır. Kullandı.
Yorumlar
Yorumlar (0)
Yorumlar üyelere açık. Üye ol · Giriş yap