Autor Zpráva
pajadvorak
Profil
Proč nefunguje omezení přístupu do soubor.php pouze pro uživatele paVel, ale je to zpřístupněno každému, kdo je přihlášen? Dřív mi to fungovalo a po přesunu na nový hosting ne. Není mi jasné v čem je chyba. Díky za každou radu.

AuthUserFile /cesta/.htpasswd
AuthName "Password Protected Area"
AuthType Basic
require valid-user

<Files soubor.php>  ##soubor je zpřístupněn pouze uživateli paVel
AuthName "Password Protected Area"
AuthType Basic
AuthUserFile /cesta/.htpasswd
require user paVel
</Files>
Keeehi
Profil
Není náhodou ten starý hosting na Apache serveru verze 2.4 a ten nový na verzi 2.2?
pajadvorak
Profil
Keeehi:
Z hostingu mi psali, že se jedná o verzi 2.4 (nový).
pajadvorak
Profil

SetEnvIf %{SERVER_PORT} ^80$ IS_NON_SSL

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
<If "%{HTTPS} == 'on'">
    AuthUserFile /cesta/.htpasswd
    AuthName "Password Protected Area"
    AuthType Basic
    require valid-user
</If>
<Files mezisoucet.php>  ##soubor zaheslován pro uživatele
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /cesta/.htpasswd
Require user uzivatel
</Files>

Tak celý problém je v této podmínce - <If "%{HTTPS} == 'on'">. Když tam není, <Files> funguje. Když ji tam nechám, abych docílit, že se to nejdříve přesměruje na HTTPS a pak teprve to chce heslo, tak <Files> přestává fungovat.

Víte někdo co s tím?
Kajman
Profil
Možná něco takového

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NE,L]

AuthUserFile /cesta/.htpasswd
AuthName "Password Protected Area"
AuthType Basic

<RequireAny>
    Require expr %{HTTPS} != 'on'
    Require valid-user
</RequireAny>

<Files "mezisoucet.php">
    AuthUserFile /cesta/.htpasswd
    AuthName "Password Protected Area"
    AuthType Basic
    <RequireAny>
        Require expr %{HTTPS} != 'on'
        <RequireAll>
            Require valid-user
            Require user uzivatel
        </RequireAll>
    </RequireAny>
</Files>
pajadvorak
Profil
Kajman:
Perfektní. :-)

Vše funguje přesně tak, jak má. Moc děkuji.
pajadvorak
Profil
Kajman:
Narazil jsem ještě na jeden problém, na který nemohu nalézt odpověď. Potřebuji ještě výše uvedený kód rozšířit a to takovým způsobem, aby pouze při přihlášení došlo k přesměrování například na index.php.

Stává se totiž, že se uživatel prohlížeč zavře a neskončí svou práci na základní stránce (index.php). Pak po přihlášení obnovou původní stránky dochází ke spuštění scriptů, ke kterým by normálně nedošlo.

Děkuji.
Kajman
Profil
A není stejný problém v tom, když uživatel obnoví stránku, že se spouští něco, co se už spouštět nemělo?

To si spíše v php udělejte systém kontrolních tokenů.

Starší článek např. tady
Moved Permanently
pajadvorak
Profil
Kajman:
Děkuji, ale to bohužel neřeší náš problém. Například by nám to znemožnilo pracovat s aplikací v dalším okně, jak autor uvádí na své stránce.

Mně jde jen o to přesměrování. Jde to provést přes htaccess?
Keeehi
Profil
Pak po přihlášení obnovou původní stránky dochází ke spuštění scriptů, ke kterým by normálně nedošlo.
U správně navržené aplikace k takovým jevům nedochází. Akce se vykonávají na POST požadavek a po dokončení se přesměrovává. To zajistí, že při obnovení stránky se akce nevykoná znovu (obnoví se stránka na kterou se přesměrovalo a ne ten původní POST požadavek, takže se akce nevykoná). No a po přihlášení se taky nic nemůže stát, když z přihlašovací stránky nějak přesměrujete. Základem je tedy spouštět akce jen na POST požadavek, jelikož na ten nemůže pouhým přesměrováním, nebo přejitím na odkaz vzniknout.
Pro výpisy, které nic nemění jsou vhodné GET požadavky, aby se na ně dalo odkazovat.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: