请选择 进入手机版 | 继续访问电脑版
在线投稿 文字标题 文字标题 文字标题 文字标题 文字标题
切换皮肤
访问控制可以由几个不同的模块完成。其中最重要的模块是mod_authz_core和mod_authz_host。本文中还将讨论使用mod_rewrite来实现访问控制。
1. 主机访问控制如果您希望根据访问者的主机地址限制访问您网站的某些部分,则可以使用mod_authz_host轻松完成此操作。
Require提供了各种允许或拒绝访问资源的不同方法。结合RequireAll,RequireAny和RequireNone指令,这些要求可以以任意复杂的方式组合,以强制执行您的访问策略。
这些指令的用法是:
Require host addressRequire ip ip.addressShell

在第一种形式中,地址是完全限定的域名(或部分域名); 如果需要,您可以提供多个地址或域名。
在第二种形式中,ip.address是IP地址,部分IP地址,网络/网络掩码对或network/nnn CIDR规范。可以使用IPv4或IPv6地址。
您可以插入而不是否定特定要求。注意,由于not不是值的否定,因此它不能单独用于允许或拒绝请求。因此,要使用否定拒绝访问,块必须具有一个评估为true或false的元素。例如,如果您有人向您的留言板发送垃圾邮件,并且您希望将其保留,则可以执行以下操作:
<RequireAll>    Require all granted    Require not ip 10.252.46.165</RequireAll>Shell

来自该地址的访客(10.252.46.165)将无法查看该指令涵盖的内容。相反,如果您拥有机器名称而不是IP地址,则可以使用它。
Require not host host.example.comShell

而且,如果您想阻止整个域的访问,只能指定地址或域名的一部分:
Require not ip 192.168.205Require not host phishers.example.com moreidiots.exampleRequire not host govShell

可以使用RequireAll,RequireAny和RequireNone指令来强制执行更复杂的需求集。
2. 任意变量的访问控制使用<If>,您可以根据任意环境变量或请求标头值来允许或拒绝访问。例如,要拒绝基于用户代理(浏览器类型)的访问,您可以执行以下操作:
<If "%{HTTP_USER_AGENT} == 'BadBot'">    Require all denied</If>Shell

使用Require expr语法,这也可以写成:
Require expr %{HTTP_USER_AGENT} != 'BadBot'Shell

3. 使用mod_rewrite进行访问控制RewriteRule标志导致发送403 Forbidden响应。使用此方法,可以根据任意条件拒绝对资源的访问。
例如,如果您希望在晚上8点到早上7点之间阻止对资源的访问,则可以使用mod_rewrite执行此操作。
RewriteEngine OnRewriteCond "%{TIME_HOUR}" ">=20" [OR]RewriteCond "%{TIME_HOUR}" "<07"RewriteRule "^/fridge"     "-" [F]Shell

这将在晚上8点之后或早上7点之前为任何请求返回403 Forbidden响应。此技术可用于您要检查的任何条件。如果首选此方法,还可以重定向或以其他方式重写这些请求。
在Apache 2.4中添加的<If>指令取代了mod_rewrite传统上习惯做的许多事情,但应该先求助于mod_rewrite。
//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/apache_http/apache-access-control.html



回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    Archiver|手机版|小黑屋|齐聚无忧 |网站地图

    Powered by Discuz! X3.4  © 2001-2013 Comsenz Inc.