网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
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)
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

上述代码定义了一个名为 RateLimitConfig 的类,主要用于配置基于行为的限流策略。该类的目的是限制可疑行为,而不是简单地限制正常请求的频率。以下是各个属性的详细解释:

  1. WindowSizeMinutes:

    • 该属性定义了一个时间窗口的大小(以分钟为单位)。在这个时间窗口内,系统会统计某个IP地址的拦截次数。
  2. MaxBlocksPerWindow:

    • 这个属性指定了在一个时间窗口内,允许的最大拦截次数。如果某个IP地址在这个时间窗口内的拦截次数超过了这个值,该IP将被限流。
  3. BlockDurationMinutes:

    • 该属性定义了IP地址被限流的持续时间(以分钟为单位)。在这个时间段内,该IP地址将无法正常访问服务。
  4. CleanupIntervalMinutes:

    • 这个属性指定了清理过期记录的时间间隔(以分钟为单位)。系统会定期清理那些已经过期的限流记录,以释放存储资源。
  5. BlockedDelayBaseMs:

    • 该属性定义了当IP地址被限流时,基础的延迟时间(以毫秒为单位)。这意味着被限流的用户在请求时会被迫等待一段时间,以增加攻击的成本。
  6. BlockedDelayMaxMs:

    • 这个属性指定了被限流时的最大延迟时间(以毫秒为单位)。这可以防止过多的服务器资源被占用。
  7. EnableVerboseLogging:

    • 该属性用于控制是否启用详细的日志记录。在生产环境中,建议将其设置为 false,以减少日志的噪音。

总结

RateLimitConfig 类提供了一种灵活的方式来配置基于行为的限流策略,旨在保护系统免受可疑行为的影响。通过设置时间窗口、最大拦截次数、限流持续时间等参数,开发人员可以有效地管理和控制对服务的访问,确保系统的稳定性和安全性。

loading