网站首页 网站源码

namespace Dpz.Core.Infrastructure.RateLimiting;
/// <summary>
/// 基于行为的限流配置
/// 专注于限制可疑行为,而非正常请求频率
/// </summary>
public class RateLimitConfig
{
/// <summary>
/// 时间窗口大小(分钟)
/// 在此时间窗口内统计拦截次数
/// </summary>
public int WindowSizeMinutes { get; set; } = 5;
/// <summary>
/// 每个时间窗口内最大拦截次数
/// 超过此次数的IP将被限流
/// </summary>
public int MaxBlocksPerWindow { get; set; } = 3;
/// <summary>
/// IP被限流的持续时间(分钟)
/// </summary>
public int BlockDurationMinutes { get; set; } = 30;
/// <summary>
/// 清理过期记录的间隔(分钟)
/// </summary>
public int CleanupIntervalMinutes { get; set; } = 60;
/// <summary>
/// 被限流时的基础延迟时间(毫秒)
/// 让攻击者等待,增加攻击成本
/// </summary>
public int BlockedDelayBaseMs { get; set; } = 2000; // 2秒
/// <summary>
/// 被限流时的最大延迟时间(毫秒)
/// 避免占用过多服务器资源
/// </summary>
public int BlockedDelayMaxMs { get; set; } = 10000; // 10秒
/// <summary>
/// 是否启用详细日志记录
/// 生产环境建议设为false,减少日志噪音
/// </summary>
public bool EnableVerboseLogging { get; set; } = false;
// 注意:移除了以下与请求频率相关的配置
// - MaxRequestsPerWindow (不再限制请求频率)
// - BaseDelayMs (重命名为 BlockedDelayBaseMs)
// - DelayMultiplierMs (不再使用)
// - MaxDelayMs (重命名为 BlockedDelayMaxMs)
}
上述代码定义了一个名为 RateLimitConfig 的类,主要用于配置基于行为的限流策略。该类的目的是限制可疑行为,而不是简单地限制正常请求的频率。以下是各个属性的详细解释:
WindowSizeMinutes:
MaxBlocksPerWindow:
BlockDurationMinutes:
CleanupIntervalMinutes:
BlockedDelayBaseMs:
BlockedDelayMaxMs:
EnableVerboseLogging:
false,以减少日志的噪音。RateLimitConfig 类提供了一种灵活的方式来配置基于行为的限流策略,旨在保护系统免受可疑行为的影响。通过设置时间窗口、最大拦截次数、限流持续时间等参数,开发人员可以有效地管理和控制对服务的访问,确保系统的稳定性和安全性。
