Apache 位置授权允许未经授权的访问

Apache 位置授权允许未经授权的访问

我正在运行 Apache/2.2.22。

我不知道如何正确执行 Apache 身份验证要求。

我的网站有两个区域:

  1. 访问始终需要密码验证(/restricted 和 /cgi-bin/restricted)
  2. 可以根据本地 IP 地址(/local 和 /cgi-bin/local)允许访问

但是,我得到这些行为:

  • 正确访问/restricted/index.html需要身份验证
  • 正确访问/cgi-bin/restrict/需要身份验证
  • 访问 /cgi-bin/restricted/target.cgi 不需要身份验证

所有这些测试确实是从允许访问 /local 和 /cgi-bin/local 的 IP 地址进行的,因此该限额可能会以某种方式超出,但肯定不应该这样做。

我的 VirtualHost 配置的相关部分是:(请注意,我目前<Location />在 cgi-bin 部分中使用 s,我之前在相关 s 中具有所有要求<Directory />,但根据我发现的其他建议将其取出;它没有影响。)

DocumentRoot /var/www

    # HTML section
    <Directory /var/www/restricted>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            AuthType Basic
            AuthName "Restricted"
            AuthBasicProvider file
            AuthUserFile /etc/apache2/passwords
            Require user username
    </Directory>

    <Directory "/var/www/local/">
            Options Indexes FollowSymLinks
            Order allow,deny
            Allow from 192.168.1.0/24
            Allow from 192.168.0.0/24
    </Directory>

    # CGI section
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

    <Directory "/usr/lib/cgi-bin/resricted">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    </Directory>

    <Location "/usr/lib/cgi-bin/restricted">
            AuthType Basic
            AuthName "Restricted"
            AuthBasicProvider file
            AuthUserFile /etc/apache2/passwords
            Order allow,deny
            Require user username
    </Location>

    <Directory "/usr/lib/cgi-bin/local">
            AllowOverride None
            Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
    </Directory>

    <Location "/usr/lib/cgi-bin/local">
            Order allow,deny
            Allow from 192.168.1.0/24
            Allow from 192.168.0.0/24
    </Location>

答案1

#<Location "/usr/lib/cgi-bin/restricted">
<Location "/cgi-bin/restricted">
#<Location "/usr/lib/cgi-bin/local">
<Location "/cgi-bin/local">

‘Location’指的是url中的路径,即主机名后面以/开头的部分,而不是fs dir。

相关内容