.htaccess « Autoriser d'env » SSLRequire désactive

voix
33

Utilisation d'Apache, je force HTTPS sur un dossier:

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

et je protégerai le dossier en utilisant Apache AuthBasic:

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

Comme cela, le mot de passe est toujours envoyé via HTTPS. Il fonctionne bien, mais j'ai essayé de désactiver l'authentification pour une seule URL:

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

Cette URL ne demande pas pour l'authentification, et les autres. Donc, tout va bien, mais HTTPS n'est plus nécessaire, et le mot de passe peuvent être envoyés en clair!

Qu'est-ce que je fais mal ici?

Créé 12/08/2012 à 21:27
utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

C'est un peu bizarre, parce que la Satisfydirective concerne les restrictions d'accès, et eventhough le SSLRequireSSLet SSLRequireaffectent SSL, ils sont considérés comme faisant partie de restriction d'accès. Ainsi , lorsque vous utilisez Satisfy Anylorsque vous autorisez l' accès à un URI de passer sans la nécessité d'utilisateur valide, elle a également fait donc l'exigence d'accès SSL fait partie de cette Any. Et puisque les options pour Satisfyest soit Allou Any, vous ne pouvez pas dire « celui - ci toujours, mais ces autres 2 tout ».

Vous devrez peut-être utiliser quelque chose comme mod_rewrite pour forcer SSL dans votre fichier htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Créé 12/08/2012 à 22:26
source utilisateur

voix
1

Merci à la réponse de Jon, je pourrais essayer différentes solutions. J'ai trouvé cette question et a appliqué la réponse à ma situation:

Dans le répertoire principal, le .htaccess contient

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

Et dans le crmsous - répertoire, le .htaccess a:

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

Il force le SSL dans tous les cas, et permet l'accès crm/index.php.

Créé 15/08/2012 à 20:07
source utilisateur

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