.htaccess:了解拒绝,允许和拒绝的使用

奥立佛

我试图通过一个简短的测试示例来理解该order deny,allow语句如何响应我到目前为止所读的内容。

我具有以下用于测试的网站结构:

将/index.htm
/.htaccess(1)
/subfolder/index.htm
/subfolder/.htaccess(2)

.htaccess(1)

order deny,allow  
allow from all

子文件夹/.htaccess(2)

order deny,allow  
deny from all

无论我在2个.htaccess文件中使用allow,deny / deny,allow(以及所有4种可能的组合)使用的顺序,我都永远不允许访问subfolder / index.htm。

据我所知,至少有一种组合可以使根allow from all在子文件夹上获胜deny from all,所以我不明白为什么我无法在如此简单的示例中成功做到这一点。

您能解释为什么以及发生了什么吗?

亚历山大·奥玛拉

指令指令

规则order deny,alloworder allow,deny定义按顺序处理deny fromallow from指令。所有允许和拒绝规则都将被处理,最终相关规则将覆盖之前的所有规则。有关确认,请参见mod_authz_host模块文档的“订购指令”部分。

请注意,与仅使用第一个匹配项的典型防火墙不同,所有的Allow和Deny指令均已处理。最后一个匹配有效(也不同于典型的防火墙)。此外,行在配置文件中的显示顺序并不重要-所有“允许”行都作为一个组处理,所有“拒绝”行都被视为另一组,并且默认状态由其自身考虑。

例如,如果我们在允许规则之前处理拒绝规则,则可以有效地创建允许IP地址的白名单。

order deny,allow
deny from all
allow from 127.0.0.1

相反,在以下示例中,我们在拒绝规则之前处理允许规则,用于拒绝IP地址的黑名单。

order allow,deny
allow from all
deny from 127.0.0.1


遗产

子目录将继承父目录的规则,除非它们声明自己的规则。如果子目录使用order指令或allow / deny指令,则不会继承父级的规则。有关此行为的确认,请参见Bug 52406,该错误引用本文档的“合并配置”部分一节。

对于没有实现任何合并逻辑的模块,例如mod_access_compat,后面部分的行为取决于后面部分是否具有该模块的任何指令。配置将被继承,直到进行更改为止,此时配置将被替换而不是合并。

简单测试

您也可以执行此简单测试以确认此行为。

将以下行放在父目录中.htaccess

order deny,allow  
deny from all

以及子目录中的以下任何或所有行.htaccess

order deny,allow  
deny from 0.0.0.0

您将看到子目录现在可以公开访问,即使父目录包含deny from all并且子目录没有allow from指令。


结论

根据文档和实验,似乎父目录不可能以任何方式覆盖子级导演的指令。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

只允许$ _POST和$ _GET并拒绝所有HTACCESS

来自分类Dev

htaccess和重写/拒绝

来自分类Dev

拒绝使用.htaccess的文件

来自分类Dev

htaccess拒绝全部允许远程访问

来自分类Dev

重复“从xxxx拒绝”和“全部允许”正确

来自分类Dev

允许 wget 和 php 拒绝休息

来自分类Dev

使用.htaccess文件拒绝某些文件类型

来自分类Dev

拒绝使用htaccess直接访问文件

来自分类Dev

使用htaccess拒绝来自IP临时的访问

来自分类Dev

拒绝使用htaccess直接访问文件

来自分类Dev

使用htaccess拒绝来自IP临时的访问

来自分类Dev

允许/拒绝getUserMedia按钮

来自分类Dev

错误:允许拒绝

来自分类Dev

使用get()允许Firestore文档查询,但使用where()拒绝

来自分类Dev

使用Nextflow和Docker的FileNotFoundException(权限被拒绝)

来自分类Dev

流星方法与拒绝/允许规则

来自分类Dev

允许Heroku拒绝Github回购

来自分类Dev

使用.htaccess拒绝访问目录中的所有PHP文件

来自分类Dev

如何使用.htaccess访问一个文件:全部拒绝

来自分类Dev

使用 .htaccess 拒绝访问子文件夹和文件

来自分类Dev

使用apache .htaccess拒绝访问隐藏文件夹和临时文件夹中的文件

来自分类Dev

使用htaccess拒绝访问css /和js /文件夹或重定向/重写到index.html

来自分类Dev

iOS App因了解更多链接而被拒绝

来自分类Dev

了解“访问被拒绝”,以便可以还原权限-ICACLS和私有化

来自分类Dev

MySql拒绝使用索引

来自分类Dev

拒绝在C中使用<=

来自分类Dev

使用JSch拒绝权限

来自分类Dev

使用“ man”拒绝权限

来自分类Dev

使用 promise 实现,被拒绝