O Apache faz com que a autorização tenha precedência sobre a autenticação

1

Nosso site foi espelhado recentemente e, portanto, Estou tentando:

  • exclui um espelho ao vivo chamado badmirror.com
  • configure uma autenticação básica para o mysite chamado mysite.com

Eu consegui primeiro expulsar o badmirror.com usando essa expressão no meu host virtual:

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        SSLEngine on
        SSLProxyEngine on
        ServerName www.mysite.com
        ServerAlias mysite.com *.mysite.com

        ServerAdmin [email protected]
        DocumentRoot /myphp/mysite/www
        <Directory "/myphp/mysite/www">
        Options FollowSymlinks MultiViews
        AllowOverride All
        Require expr "%{HTTP_HOST} =~ /(.*)mysite\.com/"
        </Directory>

        ErrorLog /var/log/apache2/ling/all.log

        SSLCertificateFile /etc/letsencrypt/live/mysite.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf


    </VirtualHost>
</IfModule>

Então basicamente essa linha faz o truque:

Require expr "%{HTTP_HOST} =~ /(.*)mysite\.com/"

Com isso, funciona bem: eu vou ao badmirror.com e ele tem uma página proibida, e eu vou para o site mysite.com e ele mostra o site.

Agora adicionei uma autenticação básica em cima disso no meu site, usando o arquivo .htaccess no meu aplicativo:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>


#Header set Access-Control-Allow-Origin *


AuthType Basic
AuthName "Password Required"
AuthUserFile /leeapp/www/.htpasswd
Require valid-user

O problema é: agora eu vou ao badmirror.com, ele me pede para autenticar, Eu autentico e agora vejo o conteúdo do mysite.com.

Então, basicamente, é como se ser um usuário válido contornasse minha outra regra

Require expr "%{HTTP_HOST} =~ /(.*)mysite\.com/"

Como posso tornar a regra de expressão HTTP_HOST mais sólida? ou pelo menos fazer a autenticação não substituir a regra?

Obrigado.

    
por ling 18.04.2018 / 15:39

1 resposta

1

Encontrado no documento apache muito abrangente: link .

Então, no meu caso, eu só precisava combinar as diretivas Require em uma diretiva RequireAll, que fez o truque para mim:

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        SSLEngine on
        SSLProxyEngine on
        ServerName www.mysite.com
        ServerAlias mysite.com *.mysite.com

        ServerAdmin [email protected]
        DocumentRoot /myphp/mysite/www
        <Directory "/myphp/mysite/www">
            <RequireAll>
                Options FollowSymlinks MultiViews
                AllowOverride All
                Require expr "%{HTTP_HOST} =~ /(.*)mysite\.com/"
                AuthType Basic
                AuthName "Password Required"
                AuthUserFile /leeapp/www/.htpasswd
                Require valid-user
            </RequireAll>
        </Directory>

        ErrorLog /var/log/apache2/ling/all.log

        SSLCertificateFile /etc/letsencrypt/live/mysite.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf


    </VirtualHost>
</IfModule>
    
por 18.04.2018 / 19:21

Tags