.htaccess „Permite de la env“ dezactivează SSLRequire

voturi
33

Folosind Apache, am forța HTTPS într-un dosar:

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

și am proteja dosarul folosind Apache AuthBasic:

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

Ca și aceasta, parola este întotdeauna trimise prin HTTPS. Acesta funcționează bine, dar apoi am încercat să dezactivați autentificarea pentru o singură adresă URL:

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

Această adresă URL nu cere pentru autentificare, iar ceilalți fac. Deci, totul este bine, dar HTTPS nu mai este necesară, iar parola pot fi trimise în clar!

Ce fac greșit aici?

Întrebat 12/08/2012 la 21:27
de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Acesta este un fel de ciudat, deoarece Satisfydirectiva afectează restricțiile de acces, precum și eventhough SSLRequireSSLși SSLRequireafectează SSL, acestea sunt considerate ca făcând parte din restricții de acces. Deci , atunci când utilizați Satisfy Anyatunci când permiteți accesul la un URI să treacă prin fără a fi nevoie de valabilitate de către utilizator, a făcut , de asemenea , atât cerința de acces SSL face parte din acest Any. Și , din moment ce opțiunile pentru Satisfyeste fie Allsau Any, nu se poate spune „asta întotdeauna, dar aceste alte 2 orice“.

Va trebui să folosiți ceva de genul mod_rewrite pentru a forța SSL în fișierul htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Publicat 12/08/2012 la 22:26
sursa de către utilizator

voturi
1

Datorită răspunsului lui Jon, am putea încerca diferite soluții. Am găsit această întrebare și aplicat răspunsul la situația mea:

În directorul principală, .htaccess conține

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

Iar în crmsubdirectorul, The .htaccess:

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

Forțează SSL , în orice caz, și permite accesul la crm/index.php.

Publicat 15/08/2012 la 20:07
sursa de către utilizator

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