【问题标题】:How can I ban a whole company from my web site? [closed]如何禁止整个公司访问我的网站? [关闭]
【发布时间】:2010-09-10 12:12:36
【问题描述】:

出于我不会详述的原因,我希望禁止整个公司访问我的网站。使用 gethostbyaddr() 检查 php 中的远程主机名是可行的,但这会大大减慢页面加载速度。大型组织(例如 hp.com 或 microsoft.com)通常具有 IP 地址块。无论如何我得到了完整的列表,还是我坚持缓慢的反向 DNS 查找?如果是这样,我可以加快速度吗?

编辑:好的,现在我知道我可以使用 .htaccess 文件来禁止一个范围。现在,我如何才能确定给定组织的范围应该是多少?

【问题讨论】:

    标签: .net php apache


    【解决方案1】:

    .htaccess 怎么样:

    Deny from x.x.x.x
    

    如果你需要拒绝一个范围说:192.168.0.x 那么你会使用

    Deny from 192.168.0
    

    同样适用于主机名:

    Deny from sub.domain.tld
    

    或者如果你想要一个 PHP 解决方案

    $ips = array('1.1.1.1', '2.2.2.2', '3.3.3.3');
    if(in_array($_SERVER['REMOTE_ADDR'])){die();}
    

    有关 htaccess 方法的更多信息,请参阅this 页面。

    现在要确定范围会很困难,大多数公司(除非他们是大公司)都会像你我一样拥有动态 IP。
    这是我之前不得不处理的一个问题,最好的办法是禁止主机名或整个范围,例如,如果它们在 192.168.0.123 上,则禁止 192.168.0.123,不幸的是你会得到一些无辜的人用任何一种方法。

    【讨论】:

    • 如果我正在阅读 OP 权利,他想要一种基于 DNS 名称(而不是 IP 地址)的禁止方式。
    • Unkwntech 明白了。我要补充一点,找出要禁止的 IP 块(没有 DNS 查找)在性能方面会更好。甚至更快地放置防火墙(或 iptables)块,因此它们甚至无法攻击 Apache。如果他们在动态 IP 上,您可以使用 cronjob nslookup 他们的域并更新规则。
    【解决方案2】:

    如果您正在练习安全的虚拟主机,那么您就有了防火墙。使用它。

    大公司拥有 IP 地址块,但即使是小公司也很少更改其 IP。因此,有一种简单的方法可以在不降低性能的情况下做到这一点:

    每个月都会对您日志中的所有 IP 进行反向查找,然后将该公司使用的所有 IP 在您的防火墙中设置为拒绝。

    一段时间后,您将开始查看它们是否具有动态地址。如果他们这样做了,那么您可能必须为每次连接尝试进行反向查找,但除非他们是一家小公司,否则您不必担心。

    【讨论】:

      【解决方案3】:

      继续使用gethostbyaddr(),但在缓存后面。您应该只需要为每个 IP 地址解决一次,这样就不会成为严重的性能问题。如果您愿意,可以从您的服务器日志中填充缓存,这样返回的用户甚至不会遇到一次性减速。

      【讨论】:

        【解决方案4】:

        如果您这样做的目的是让公司的人员访问您的网站稍有不便,请遵循上述建议。但是您将无法完全确保您阻止了所有访问,因为它们可能总是通过代理。如果其他公众可以访问它,您将不得不担心archive.org、搜索引擎缓存等。

        可能不是您正在寻找的答案,但它是准确的。

        【讨论】:

          【解决方案5】:

          如果您使用的是 apache,请查看 .htaccess:.htaccess tutorial

          【讨论】:

            【解决方案6】:

            首先在whois.net 上搜索公司。如果您知道它们只是一个域,请进行 whois 查询。否则,按关键字搜索他们拥有的域。

            您可以通过 whois 查询找出分配给公司的主要 IP 范围,然后相应地构建您的拒绝规则。

            【讨论】:

              【解决方案7】:

              我知道WikiScanner 可让您搜索公司或其他组织,然后列出属于它们的 IP 地址范围。举个例子,这里是所有的IP addresses belonging to Google,至少根据 WikiScanner。

              根据HowStuffWorks,他们使用了一种叫做“IP2Location”的东西。

              【讨论】:

                【解决方案8】:

                您可以访问实际的服务器配置吗?如果是这样,取决于服务器,您可以在配置中进行。

                请参阅this 线程以获取一些可能有用的信息。

                【讨论】:

                  【解决方案9】:

                  http://en.wikipedia.org/wiki/Rwhois 远程登录 rwhois.arin.net 4321

                  这曾经有效。

                  【讨论】:

                    【解决方案10】:

                    负载不应该放在网络服务器上,而应该放在防火墙上。

                    【讨论】:

                      【解决方案11】:

                      请注意,使用上述技术永远不可能完全禁止特定公司访问您的网站。他们仍然可以使用代理服务器或在家中查看您的网站。

                      如果您绝对想控制谁有权访问,您应该只允许经过身份验证和授权的用户访问您的网站。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2013-10-04
                        • 2019-02-25
                        • 1970-01-01
                        • 2018-09-02
                        相关资源
                        最近更新 更多