.htaccess "Consenti da env" disabilita SSLRequire

voti
33

Utilizzando Apache, forzo HTTPS su una cartella:

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

e proteggo la cartella usando Apache AuthBasic:

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

In questo modo, la password viene sempre inviato tramite HTTPS. Funziona bene, ma poi ho provato a disabilitare l'autenticazione per un singolo URL:

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

Questo URL non chiede l'autenticazione, e gli altri lo fanno. Quindi tutto va bene, ma HTTPS non è più richiesto, e la password possono essere inviate in chiaro!

Che cosa sto facendo male qui?

È pubblicato 12/08/2012 alle 21:27
dall'utente
In altre lingue...                            


2 risposte

voti
0

Questo è un po 'strano, perché la Satisfydirettiva riguarda le restrizioni di accesso, e benche' l' SSLRequireSSLe SSLRequireSSL effetto, che sono considerati parte di restrizione di accesso. Così, quando si utilizza Satisfy Anyquando si consente l'accesso a un URI di passare attraverso senza la necessità di valid-user, ma ha anche fatto in modo che il requisito di accesso SSL è parte di quella Any. E dal momento che le opzioni per Satisfyo è Allo Any, non si può dire "questo sempre, ma questi altri 2 qualsiasi".

Potrebbe essere necessario usare qualcosa come mod_rewrite per forzare SSL nel file .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Risposto il 12/08/2012 a 22:26
fonte dall'utente

voti
1

Grazie alla risposta di Jon, ho potuto provare diverse soluzioni. Ho trovato questa domanda e applicato la risposta alla mia situazione:

Nella directory principale, il .htaccess contiene

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 nella crmsottodirectory, il .htaccess ha:

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

Costringe l'SSL, in ogni caso, e permette l'accesso a crm/index.php.

Risposto il 15/08/2012 a 20:07
fonte dall'utente

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