我正在学习.htaccess中的Apache指令,并测试安全设置。我发现了LimitExcept指令。
我在localhost中有一个wordpress目录,在里面有一个.htaccess,所以指令会影响像我的项目文件这样的所有子目录。
下面是我在.htaccess中的代码:
Options All -Indexes
FileEtag None
<files wp-config.php>
order allow,deny
deny from all
</files>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* - [F]
</IfModule>
<LimitExcept POST HEAD>
Order Deny,Allow
Deny from all
</LimitExcept>
#<IfModule mod_rewrite.c>
#RewriteEngine on
#RewriteCond %{REQUEST_METHOD} ^GET
#RewriteRule .* - [R=400]
#</IfModule>困扰我的是,我使用的LimitExcept指令并没有阻止我进入我的主页。就像GET请求被允许一样。
我必须添加或使用重写指令来阻止我的GET请求。
我还发现,如果我将HEAD方法从当前的LimitExcept指令中删除,那么请求我的主页将正确地返回一个禁止的请求响应。
我知道可以在服务器配置中应用其他设置,但我不希望在该级别上进行更改,因为我可能无法从共享宿主服务服务器访问此配置。
那么,我是遗漏了什么,还是LimitExcept指令有问题?
发布于 2020-08-05 13:01:47
命令拒绝,允许从所有
头和头似乎有着内在的联系。封锁其中一个而你阻止另一个。来自the docs for (也包括<LimitExcept>):
如果使用GET,它还将限制HEAD请求。
在我的测试中,情况正好相反.如果你限制头部,那么得到也是限制的。
回到你的<LimitExcept POST HEAD>指令..。通过为HEAD创建一个异常,您似乎也在为GET创建一个异常。你需要从指令中移除头部。(假设您在Apache2.4上,您还应该使用Require指令,而不是旧的Order / Deny指令。)例如:
<LimitExcept POST>
Require all denied
</LimitExcept>https://stackoverflow.com/questions/63262719
复制相似问题