由于我不会进入的原因,我希望禁止整个公司访问我的网站。使用gethostbyaddr()检查php中的远程主机名是否有效,但这会减慢页面加载速度。大型组织(例如,hp.com或microsoft.com)通常具有IP地址块。无论如何,我得到完整列表,还是我坚持慢速反向DNS查找?如果是这样,我可以加快速度吗?
编辑:好的,现在我知道我可以使用.htaccess文件禁止范围了。现在,我怎样才能弄清楚给定组织的范围应该是什么?
答案 0 :(得分:11)
.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,不幸的是你会得到一些两种方法都是无辜的人。
答案 1 :(得分:4)
如果您正在练习安全的虚拟主机,那么您就拥有防火墙。使用它。
大公司拥有IP地址块,但即使是规模较小的公司也很少改变其IP地址。因此,在不降低性能的情况下,可以轻松实现此目的:
每个月都会对日志中的所有IP进行反向查找,然后将该公司使用的所有IP放在防火墙中作为拒绝。
过了一会儿,你会开始看他们是否有动态地址。如果他们这样做,那么你可能不得不为每次连接尝试进行反向查找,但除非他们是一家小公司,否则你不必担心它。
答案 2 :(得分:2)
继续使用gethostbyaddr()
,但在缓存后面。您应该只需要为每个IP地址解析一次,然后它就不会是一个重要的性能问题。如果需要,可以从服务器日志中填充缓存,这样返回的用户甚至不会达到一次性减速。
答案 3 :(得分:2)
如果您这样做的目的是让公司的人员访问您的网站稍微不方便,请遵循上述建议。但是你无法完全确保阻止每次访问,因为他们总是可以通过代理。如果其他公众可以访问它,您将不得不担心archive.org,搜索引擎缓存等。
可能不是您正在寻找的答案,但它是准确的。
答案 4 :(得分:1)
如果您使用的是apache,请查看.htaccess:.htaccess tutorial
答案 5 :(得分:1)
首先在whois.net上搜索公司。如果您知道它们只是一个域,请执行whois查找。否则,按关键字搜索他们拥有的域名。
您可以通过whois查询找出分配给公司的主要IP范围,然后相应地构建您的拒绝规则。
答案 6 :(得分:1)
我知道WikiScanner允许您搜索公司或其他组织,然后列出属于它们的IP地址范围。举个例子,这里是所有IP addresses belonging to Google,至少根据WikiScanner。
根据HowStuffWorks,他们使用称为“IP2Location”的东西。
答案 7 :(得分:0)
您是否可以访问实际的服务器配置?如果是这样,取决于服务器,您可以在配置中执行此操作。
请参阅this主题以获取可能有用的一些信息。
答案 8 :(得分:0)
http://en.wikipedia.org/wiki/Rwhois telnet rwhois.arin.net 4321
这曾经有用。
答案 9 :(得分:0)
不应将负载放在Web服务器上,您应该将其放在防火墙上。
答案 10 :(得分:0)
请注意,使用上述技术永远不可能完全禁止特定公司访问您的网站。他们仍然可以使用代理服务器或在家中查看您的网站。
如果您绝对想要控制谁有权访问,则应该只允许经过身份验证和授权的用户访问您的网站。