.htaccess "Toestaan ​​van env" schakelt SSLRequire

stemmen
33

Met behulp van Apache, dwing ik HTTPS op een map:

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

en bescherm ik de map met behulp van Apache AuthBasic:

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

Op deze manier wordt het wachtwoord altijd verzonden via HTTPS. Het werkt goed, maar toen ik probeerde om authenticatie voor een enkele URL te schakelen:

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

Deze URL vraagt ​​niet voor authenticatie, en de anderen doen. Dus alles is goed, maar HTTPS is niet meer nodig, en het wachtwoord kan in duidelijke worden verzonden!

Wat doe ik verkeerd hier?

De vraag is gesteld op 12/08/2012 om 21:27
user
In andere talen...                            


2 antwoorden

stemmen
0

Dit is een beetje raar, omdat de Satisfyrichtlijn van invloed op toegangsbeperkingen, en hoewel de SSLRequireSSLen SSLRequireinvloed SSL, worden ze beschouwd als onderdeel van toegangsbeperking. Dus wanneer u Satisfy Anybij de toegang tot een URI te passeren zonder de noodzaak van een geldige gebruiker, het maakte het ook zo de SSL toegang eis is onderdeel van dat Any. En aangezien de opties voor Satisfyofwel Allof Any, kun je niet zeggen: "dit altijd, maar deze andere 2 elk".

Het kan zijn om iets te gebruiken, zoals mod_rewrite om SSL te dwingen in uw htaccessdossier:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
antwoordde op 12/08/2012 om 22:26
bron van user

stemmen
1

Dankzij antwoord Jon's, kon ik verschillende oplossingen proberen. Ik vond deze vraag en toegepast het antwoord op mijn situatie:

In de hoofdmap, het .htaccess bevat

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

En in de crmsubdirectory, de .htaccess heeft:

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

Het dwingt de SSL in ieder geval, en kan de toegang tot crm/index.php.

antwoordde op 15/08/2012 om 20:07
bron van user

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