• 关于黑名单IP的设置


    最近在做一个项目的时候,需要做一个自动的黑名单设置,也就是将一天内重复出错的超过一定次数的手机号,和IP给加入黑名单里面,下次请求的时候先判断是否在黑名单里。

    这个是获取IP地址的方法

    1  private string GetIP()
    2         {
    3             string ip = string.Empty;
    4             if (!string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"]))
    5                 ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]);
    6             if (string.IsNullOrEmpty(ip))
    7                 ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);
    8             return ip;
    9         }
    GetIP

    当时自己也没在意,就直接把出现错误的IP和手机存到相应的记录表里,当时我是拿自己的手机连的无线网和自己工位上的电脑测了一下没问题,可以准确获取到IP,然后就直接告诉客户没问题,就这样上线了,问题就这样的存在了。客户突然告诉我很多电话打过来说都是IP受限制,我看了一下,发现一个IP在分别用不同的手机号都出过错。这个怎么个情况呢,不可能存在这么多人用一个IP的网络啊。后来在网上查了下,才明白手机的数据网例如:2G,3G,4G这些网络不可能会一个手机号一个IP,一般都是一个地区的手机号都是一个IP,所以才出了我这边的这个错误。

    然后这个当时我想到了两个解决方案,一是把IP次数加大。

    另一个解决方案是把手机和一般的请求区分开,这样当时手机的请求出现时,就不考虑IP的这个问题,只有PC上的请求时再去考虑IP的问题。

    这个两个方案其实都有一些瑕疵,但我这边时暂时是考虑不到请他的方法,希望高手们能多多指教。

  • 相关阅读:
    如何检测死锁并快速定位死锁位置
    几种线程本地存储变量和普通变量的性能比较
    multi_index_container性能测试
    [高并发引擎]定时器模块
    [高并发引擎]Log模块
    静态博客教程 1:hexo + github
    蛇形填数
    实现简单的 ls 命令
    静态库与动态库的创建和使用
    用两个栈实现队列
  • 原文地址:https://www.cnblogs.com/qzzy/p/4765634.html
Copyright © 2020-2023  润新知