.htaccess "Permitir from env" desactiva SSLRequire

votos
33

Usando Apache, fuerzo HTTPS en una carpeta:

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

y protejo la carpeta usando Apache AuthBasic:

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

De esta manera, la contraseña se envía siempre a través de HTTPS. Funciona bien, pero luego trató de desactivar la autenticación para una única URL:

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

Esta URL no pide para la autenticación, y los demás lo hacen. Así que todo está bien, pero HTTPS no se requiere más, y la contraseña se pueden enviar en claro!

Qué estoy haciendo mal aquí ?

Publicado el 12/08/2012 a las 21:27
por usuario
En otros idiomas...                            


2 respuestas

votos
0

Esto es un poco extraño, ya que la SatisfyDirectiva afecta a las restricciones de acceso, y aunque el SSLRequireSSLy SSLRequireafectan SSL, que son considerados parte de la restricción de acceso. Así que cuando se utiliza Satisfy Anycuando se permite el acceso a un URI para pasar a través sin la necesidad de válido-usuario, sino que también lo hizo así el requisito de acceso SSL es parte de eso Any. Y puesto que las opciones para Satisfyes o bien Allo Any, no se puede decir "éste siempre, pero estos otros 2 ninguna".

Puede que tenga que usar algo como mod_rewrite para forzar SSL en su archivo .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Respondida el 12/08/2012 a las 22:26
fuente por usuario

votos
1

Gracias a la respuesta de Jon, he podido probar diferentes soluciones. He encontrado esta pregunta y se aplica la respuesta a mi situación:

En el directorio principal, el .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

Y en el crmsubdirectorio, el .htaccess tiene:

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

Obliga al SSL en todo caso, y permite el acceso a crm/index.php.

Respondida el 15/08/2012 a las 20:07
fuente por usuario

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