使用PHP或.htaccess限制IP访问

来源:百度文库 编辑:神马文学网 时间:2024/04/27 17:39:39
很多网站实战过程中都经历过这样的事情:有些人使用各种IP来进行spam或者利用程序来进行网站内容抓取。这样的不道德行为为我们网站带来了很大的负担。另外,由于一些搜索引擎爬虫不遵守固定协议,对网站大量的抓取和重复爬行,给网站服务器造成重大压力。这些情况都需要我们及时处理,否则给网站带来的伤害是很大的。通过使用PHP或.htaccess对固定IP进行限制访问在做网站优化以及网站基础部署中都是有用的,可以有效防止采集和Spam来源。屏蔽ip段很简单,在.htaccess里加入:order allow,deny# 禁止一个ip地址deny from 192.168.108.1# 禁止一个ip段deny from 192.168.108.0/255#允许一个ip段allow from 192.168.108.0/255# 或者你需要在这ip段中允许部分ipallow from 192.168.108.99# 除此之外一切均可以访问allow from all如果你能获取捣乱来源的IP,那么可以利用网站程序自带的IP禁止将其IP ban掉,或者如果你的服务器支持PHp,那么可以使用以下代码实现对固定IP的限制访问。 复制内容到剪贴板 代码: 这个代码有个缺陷,就是每次都需要在网页上添加IP,对于要限制的IP地址比较多的时候,就比较繁琐。那么可以使用以下代码减轻你的网站负担。复制内容到剪贴板 代码: 这样只需要在ban_ip_list.dat里面每行添加一个IP就可以实现IP禁止了。如果网站不支持PHP或者需要禁止的IP特别多,那么我们可以利用.htaccess来实现限制效果。复制内容到剪贴板 代码: Order Deny,Allow Deny from xxx.xxx.xxx.xxx Deny from xxx.xxx.xxx htaccess保护后台方法1:指定IP来访问来访问后台如果你是用固定IP上网的话,我们就可以利用.htaccess文件直接定你要访问的IP地址,用这个来限制对后台的访问。建立一个空的.htaccess文件,在里面输入 Order Deny,Allow Deny from all Allow from 127.0.0.1 其中127.0.0.1是你的ip,你也可以指定一段IP如:127.0.0等,也可以指定多个IP给他,如127.0.0.1,192.168.0.1等。如果不是以上IP访问后台,就会出错。方法2:用口令来保护后台当然,大部份人是没有固定IP的,那么我们也可以利用口令来保护我们的joomla后台。建立一个空的.htaccess文件,输入下列内容: AuthType BasicAuthName "Joomla Administrator"AuthUserFile 你joomla所在的目录/administrator/.htpasswdrequire valid-user 再用Apache服务器自带的htpasswd.exe文件建立一个口令文件.htpasswd,注意这个口令文件也要放在你joomla所在的目录/administrator中。命令如下: htpasswd -c 你joomla所在的目录/administrator/.htpasswd blankblank是你要建的用户名。 #第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数如果你们想修改密码,可以如下 htpasswd -m .htpasswd blank 呵呵,这样你进入后台时,你就会发现浏览器先弹出一个窗口向你要口令。多一层保护。当然,你也可以本机试成功之后再将这2个文件上传到你的joomla的且台目录中去,注意一下你的.htaccess文件中的目录,不能写错了,否则会后台进不去的。要去掉口令保护也很简单,通过ftp把这2 个文件删除就行。在apache中设置禁止某个IP段访问网站,Allow指令影响哪些主机可以访问服务器的一个区域。可以用主机名、IP地址、 IP地址范围或者其他环境变量中捕获的客户端请求特性来对访问进行控制。 说明: 控制哪些主机能够访问服务器的一个区域 语法: Allow from all|host|env=env-variable [host|env=env-variable] ... 上下文: 目录, .htaccess 覆盖项: Limit 状态: Base 模块: mod_accessAllow指令影响哪些主机可以访问服务器的一个区域。可以用主机名、IP地址、 IP地址范围或者其他环境变量中捕获的客户端请求特性来对访问进行控制。 这个指令的第一个参数总是from。随后的参数可以有三种不同形式。 如果指定Allow from all,则允许所有主机访问,需要 Deny和Order指令像下面讨论的那样配置。 要只允许特定一部分主机或主机群访问服务器,host可以用下面任何一种格式来指定: 一个域名(部分) 例子:Allow from apache.org 允许名字与给定字符串匹配或者以该字符串结尾的主机访问。 只有完整的名字组成部分才被匹配,因此上述例子将匹配foo.apache.org而不能匹配fooapache.org。 这样的配置将引起服务器执行一个对客户IP地址的反查域名操作而不管HostnameLookups指令是否设置 完整的IP地址 例子:Allow from 10.1.2.3 允许一个主机的一个IP地址访问。 部分IP地址 例子:Allow from 10.1 IP地址的开始1到3个字节,用于子网限制。 网络/掩码对 例子:Allow from 10.1.0.0/255.255.0.0 一个网络a.b.c.d,和一个掩码w.x.y.z。用于更精确的子网限制。 网络/nnn 无内别域间路由规格 例子:Allow from 10.1.0.0/16 同前一种情况相似,除了掩码由nnn个高位字节构成。 注意以上后三个例子完全匹配同一组主机。IPv6地址和IPv6子网可以像下面这样指定: Allow from fe80::a00:20ff:fea7:ccea Allow from fe80::a00:20ff:fea7:ccea/10Allow指令的第三种参数格式允许对服务器的访问由 环境变量的一个扩展指定。指定 Allow from env=env-variable时,如果环境变量env-variable存在则访问请求被允许。 使用由mod_setenvif提供的指令,服务器用一种基于客户端请求的弹性方式提供了设置环境变量的能力。 因此,这条指令可以用于允许基于像User-Agent(浏览器类型)、Referer或者其他Http请求头字段 的访问。 例子: SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in Order Deny,Allow Deny from all Allow from env=let_me_in 这种情况下,发送以KnockKnock/2.0开头的用户代理标示的浏览器将被允许访问,而所有其他浏览器将被禁止访问。 Deny 指令 说明: 控制哪些主机被禁止访问服务器 语法: Deny from all|host|env=env-variable [host|env=env-variable] ... 上下文: 目录, .htaccess 覆盖项: Limit 状态: Base 模块: mod_access 这条指令允许基于主机名、IP地址或者环境变量限制对服务器的访问。 Deny指令的参数设置和Allow指令完全相同。 Order 指令 说明: 控制缺省的访问状态和Allow与Deny指令被评估的顺序。 语法: Order ordering 默认值: Order Deny,Allow 上下文: 目录, .htaccess 覆盖项: Limit 状态: Base 模块: mod_access Order指令控制缺省的访问状态和 Allow与Deny指令被评估的顺序。 Ordering是以下几种范例之一: Deny,Allow Deny指令在 Allow指令之前被评估。缺省允许所有访问。 任何不匹配Deny指令或者匹配 Allow指令的客户都被允许访问服务器。 Allow,Deny Allow指令在 Deny指令之前被评估。缺省禁止所有访问。 任何不匹配Allow指令或者匹配 Deny指令的客户都将被禁止访问服务器。 Mutual-failure 只有出现在Allow列表并且不出现在 Deny列表中的主机才被允许访问。 这种顺序与Order Allow,Deny具有同样效果,不赞成使用,它包括了哪一种配置。 关键字只能用逗号分隔;它们之间不能有空格。注意在所有情况下每个Allow和Deny指令语句都将被评估。 在下面的例子中,apache.org域中所有主机都允许访问,而其他任何主机访问都被拒绝。 Order Deny,Allow Deny from all Allow from apache.org 下面例子中,apache.org域中所有主机,除了foo.apache.org子域包含的主机被拒绝访问以外,都允许访问。 而所有不在apache.org域中的主机都不允许访问,因为缺省状态是拒绝对服务器的访问。 Order Allow,Deny Allow from apache.org Deny from foo.apache.org 另一方面,如果上个例子中的Order指令改变为Deny,Allow, 将允许所有主机的访问。这是因为,不管配置文件中指令的实际顺序如何, Allow from apache.org指令会最后被评估到并覆盖之前的 Deny from foo.apache.org。所有不在apache.org 域中的主机也允许访问是因为缺省状态被改变到了允许。即使没有伴随Allow和Deny指令,一个Order 指令的存在也会影响到服务器上某一个部分的访问, 这是由于他对缺省访问状态的影响。例如, Order Allow,Deny 这样将会禁止所有对/www目录的访问,因为缺省状态将被设置为拒绝. Order指令只在服务器配置的每个段内部控制访问指令的处理。 这暗示着,例如,一个在段出现的 Allow或者Deny指令总是将会在一个段或者 .htaccess文件中出现的 Allow或Deny 指令之后被评估,而不管Order指令中的设置为何。要了解配置段落合并的详细信息, 参看How Directory, Location and Files sections work相关文档。 本文转自:新网商 本文链接:http://www.spbug.cn/archives/482.html