.htaccess "Permitir que a partir de env" desativa SSLRequire

votos
33

Usando Apache, eu forçar HTTPS em uma pasta:

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq www.example.com
ErrorDocument 403 https://www.example.com/admin/

e eu proteger a pasta usando Apache AuthBasic:

AuthType Basic
AuthName Administration
AuthUserFile /path/to/my/.htpasswd
Require valid-user
Satisfy all

Assim, a senha é sempre enviados através de HTTPS. Ele funciona bem, mas então eu tentei desativar a autenticação para um único URL:

SetEnvIf Request_URI crm/index\.php$ removeme_uri
Order deny,allow
Deny from all
Allow from env=removeme_uri
Satisfy any

Este URL não pede para autenticação, e os outros fazem. Então, tudo está bem, mas HTTPS não é mais necessário, e a senha podem ser enviados em claro!

O que estou fazendo de errado aqui ?

Publicado 12/08/2012 em 21:27
usuário
Em outras línguas...                            


2 respostas

votos
0

Isso é meio estranho, porque a Satisfydirectiva afeta as restrições de acesso, e mesmo admitindo que o SSLRequireSSLe SSLRequireSSL afetam, eles são considerados parte de restrição de acesso. Então, quando você usar Satisfy Anyao permitir o acesso a um URI para passar sem a necessidade de usuário válido, ele também fez assim o requisito de acesso SSL é parte desse Any. E uma vez que as opções para Satisfyou é Allou Any, você não pode dizer "este sempre, mas estes outros 2 qualquer".

Você pode ter que usar algo como mod_rewrite para forçar SSL em seu arquivo .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Respondeu 12/08/2012 em 22:26
fonte usuário

votos
1

Graças a resposta de Jon, eu poderia tentar soluções diferentes. Eu encontrei esta questão e aplicado a resposta à minha situação:

No diretório principal, o .htaccess contém

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.example.com"
ErrorDocument 403 https://www.example.com/admin/

AuthType Basic
AuthName "Administration"
AuthUserFile /path/to/my/.htpasswd
Require valid-user
Satisfy all

E no crmsubdiretório, o .htaccess tem:

<FilesMatch "index\.php">
    Allow from all
    Satisfy any
</FilesMatch>

Ele força o SSL em qualquer caso, e permite que o acesso a crm/index.php.

Respondeu 15/08/2012 em 20:07
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more