.net 我怎样才能禁止整个公司进入我的网站?

.net 我怎样才能禁止整个公司进入我的网站?,.net,php,apache,.net,Php,Apache,出于我不想透露的原因,我希望禁止整个公司访问我的网站。使用gethostbyaddr()在php中检查远程主机名是可行的,但这会大大降低页面加载速度。大型组织(如hp.com或microsoft.com)通常有IP地址块。不管怎样,是我得到了完整的列表,还是我陷入了缓慢的反向DNS查找?如果是,我可以加快速度吗 编辑:好的,现在我知道我可以使用.htaccess文件来禁止一个范围。现在,我如何计算给定组织的范围呢?如果使用apache,请查看.htaccess:那么.htaccess如何: De

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


编辑:好的,现在我知道我可以使用.htaccess文件来禁止一个范围。现在,我如何计算给定组织的范围呢?

如果使用apache,请查看.htaccess:

那么.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方法的更多信息,请参见第页

现在要确定范围将很困难,大多数公司(除非它们是大公司)都会像你我一样拥有动态IP。

这是我以前必须解决的一个问题,最好的办法是禁止主机名或整个范围,例如,如果主机名在192.168.0.123上,那么就禁止192.168.0.123,不幸的是,这两种方法都会让一些无辜的人使用。

您有权访问实际的服务器配置吗?如果是这样,根据服务器的不同,您可以在配置中执行此操作


有关一些可能有用的信息,请参阅线程。

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

如果您正在练习安全的网络托管,那么您就有了防火墙。使用它

大公司有IP地址块,但即使是小公司也很少更改IP地址。因此,有一种不降低性能的简单方法:

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


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

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

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

telnet rwhois.arin.net 4321

这一功能过去很有效。

我知道可以让您搜索公司或其他组织,然后列出属于它们的IP地址范围。作为一个例子,至少根据维基扫描器,以下是所有的问题


据介绍,他们使用了一种叫做“IP2Location”的东西。如果你这样做的目的是让公司的人访问你的网站稍微不方便,请遵循上面的建议。但您无法完全确保阻止所有访问,因为它们可能总是通过代理。如果其他公众可以访问它,你就必须担心archive.org、搜索引擎缓存等问题


可能不是您想要的答案,但它是准确的。

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

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


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

如果我读对了,他想要一种基于DNS名称(而不是IP地址)的禁令。我要补充的是,从性能角度考虑,最好确定要禁止的IP块(无DNS查找)。甚至更快地加入防火墙(或iptables)块,这样他们甚至不能攻击Apache。如果他们在动态IP上,您可以使用cronjob查找他们的域并更新规则。