.htaccess „Zezwalaj z env” wyłącza SSLRequire

głosy
33

Korzystanie z Apache, wymusić HTTPS w folderze:

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

i chronić folder przy użyciu Apache AuthBasic:

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

Tak, hasło jest zawsze wysyłane za pośrednictwem protokołu HTTPS. To działa dobrze, ale potem próbowałem wyłączyć uwierzytelnianie za pomocą pojedynczego adresu URL:

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

Ten adres URL nie prosi o uwierzytelnieniu i inni. Więc wszystko jest dobrze, ale nie jest wymagane HTTPS już, a hasło może zostać wysłane w jasne!

Co robię źle tutaj?

Utwórz 12/08/2012 o 21:27
użytkownik
W innych językach...                            


2 odpowiedzi

głosy
0

To trochę dziwne, ponieważ Satisfydyrektywa dotyczy ograniczenia dostępu, a eventhough SSLRequireSSLi SSLRequirewpływa SSL, są one traktowane jako część ograniczeń dostępu. Więc kiedy używasz Satisfy Anykiedy umożliwiając dostęp do URI do przejść bez potrzeby ważnej użytkownika, ale także sprawiło, że wymóg dostępu SSL jest częścią tego Any. A ponieważ opcji Satisfyjest albo Allczy Anynie można powiedzieć „to zawsze, ale te pozostałe 2 dowolny”.

Być może trzeba będzie użyć czegoś jak mod_rewrite zmusić SSL w pliku .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Odpowiedział 12/08/2012 o 22:26
źródło użytkownik

głosy
1

Dzięki odpowiedź Jona, mogę próbować różnych rozwiązań. Znalazłem to pytanie i odpowiedź na zastosowane mojej sytuacji:

W głównym katalogu, zawiera .htaccess

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

A w crmpodkatalogu, .htaccess posiada:

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

Zmusza SSL w każdym przypadku, a także umożliwia dostęp do crm/index.php.

Odpowiedział 15/08/2012 o 20:07
źródło użytkownik

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