代码之家  ›  专栏  ›  技术社区  ›  Ash

IP地址过滤

  •  8
  • Ash  · 技术社区  · 15 年前

    我正在考虑为我的Rails SaaS应用程序实现IP地址过滤。简而言之,我希望管理员能够指定一个或多个IP地址(或一系列IP地址),然后我的应用程序只接受来自指定地址的实例请求。

    http://github.com/bluemonk/ipaddress

    有没有人实现了这种过滤,能够描述一种对他们有效的方法,或者有什么我需要担心的问题?

    或者,是否有一个现有的Ruby库能够自动处理所有这些问题,并设法避开我的google搜索?

    非常感谢,

    3 回复  |  直到 15 年前
        1
  •  6
  •   ph0rque    14 年前

    ipaddress 是一个很棒的库(我认识作者),但是除非您计划对IP地址执行一些高级操作,否则您可能不需要它。

    1. 存储要筛选的IP地址数组。可以使用字符串表示法(192.168.1.1)或long int表示法。对于字符串版本,您甚至可以允许使用通配符(192.168.1.*)

    2. 然后配置 before_filter 在控制器中,将加载禁用IP的列表并执行简单的字符串匹配以检查当前 request.ip_address request.remote_ip 在rails 3)中,匹配一个被禁止的IP。如果为true,则重定向到错误页。

    如您所见,您甚至不需要将IP转换为IP对象,除非您需要执行其他类型的操作。

        2
  •  4
  •   Community Mohan Dere    6 年前

    Rack::Attack 也许是个不错的选择。

    https://github.com/kickstarter/rack-attack

    攻击!!!

    用于阻止和限制滥用客户端的DSL

        3
  •  3
  •   Andrew Atkinson    15 年前

    我认为使用Rails3内置的路由功能可以实现您想要的。格雷格·波拉克介绍 Rails 3 Action Dispatch :constraints => {:ip => /192\.168\.1\.\d{1,3}}/} 选项,其中可以提供与要允许的IP地址范围匹配的正则表达式。

    再扩展一点,看看 Advanced constraints request.remote_ip

    因此,我将建立您的管理视图,以便能够输入批准的IP地址,然后应用程序路由可以为传入请求提取此列表。