Правила /cgi-bin .htaccess или apache2.config вызывают диалоговое окно пароля, но cgi выполняется до авторизации

У меня есть несколько скриптов cgi, которые создают динамический контент, который нам нужно защитить паролем. Однако, если я помещу требования авторизации apache2 в cgi-bin, появится диалоговое окно авторизации, но за диалоговым окном страница все равно загружается, и пользователи могут просто отменить диалоговое окно авторизации и получить доступ к содержимому, созданному сценарием cgi. Как предотвратить такое поведение и принудительно выполнить проверку авторизации перед выполнением скрипта?

-Спасибо

J


person Jason Pitt    schedule 14.08.2018    source источник


Ответы (1)


Насколько я могу судить, это ошибка в приоритетах выполнения модуля apache2. Я работал над этим, переместив cgi-bin из каталога Ubuntu по умолчанию /usr/lib/cgi-bin в фактический каталог веб-сайта /var/www/html/mywebsite/cgi-bin, отредактировав apache2.conf следующим образом. ..note /var/www/html/mywebsite имеет символическую ссылку на /mywebsite:

# Include list of ports to listen on
Include ports.conf


ScriptAlias "/cgi-bin/" "/var/www/html/mywebsite/cgi-bin/"


# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
    Options FollowSymLinks
    AllowOverride None
    AuthUserFile /mywebsite/.htpasswd
        AuthType Basic
        AuthName "from root"
    Require valid-user
</Directory>

<Directory /var/www/html/>
        Options FollowSymLinks
        AllowOverride None
        AuthUserFile /mywebsite/.htpasswd
        AuthType Basic
        AuthName "from var/www/html"
        Require valid-user
</Directory>

#<Directory /usr/share>
#   AllowOverride None
#   Require all granted
#</Directory>

<Directory /var/www/html/mywebsite/cgi-bin/>
    Options Indexes FollowSymLinks ExecCGI
    #AddHandler cgi-script .cgi
    SetHandler cgi-script 
    AllowOverride None
    AuthUserFile /mywebsite/.htpasswd
    AuthType Basic
    AuthName "from cgi-bin"
    Require valid-user
</Directory>



#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>




# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#
AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

person Jason Pitt    schedule 12.02.2019