Odhlášení z HTTP autentizace (Apache + PHP)

Ladik

Odhlášení z HTTP autentizace (Apache + PHP)
« kdy: 07. 01. 2012, 14:31:56 »
Ahoj,
dělám velmi jednoduchý web, v podstatě jde jen o seznam fotogalerií a prohlížení fotek. Přihlášení je vyřešené pomocí HTTP autentizace viz .htaccess

AuthType Basic
AuthName "Server"
Require valid-user
AuthUserFile soubor.txt
+ nějaká pravidla pro přepis adres

Už asi dva dny hledám funkční způsob odhlášení HTTP autentizace, které by fungovalo pod všemi prohlížeči. Bohužel triviální http://logout@nazevwebu.cz nefunguje v Opeře a IE. Způsobů jsem zkoušel více, ale vše fungovalo v pořádku jen ve Firefoxu a Chromu (další prohlížeče z jiných OS než Windows jsem ještě nezkoušel). Pro IE existuje extra příkaz v javascriptu a tak jsem nakonec zprovoznil i IE. Opera stále vzdoruje - i když se odkáži na PHP stránku logout.php, která začíná:

header('WWW-Authenticate: Basic realm="Server"');
header('HTTP/1.0 401 Unauthorized');
echo "Prihlaste se...";

tak Opera sice hodí okno pro přihlášení, ale tam stačí dát storno, smazat v url logout.php a web stále funguje, jako když je uživatel přihlášený.

Jiný způsob přihlašování se mi nechce volit, protože když by někdo znal odkaz na konkrétní fotku, tak by ji zobrazil i bez přihlášení. Zároveň se fotky načítají také do webu na další doméně a než se načte první, tak se vyhodí okno pro přihlášení pšes HTTP autentizaci, což je pro návštěvníka rychlejší než se přihlašovat na jiném webu, aby si na svém foto zobrazil.

Děkuji za odpověď.


Lol Phirae

Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #1 kdy: 07. 01. 2012, 14:35:53 »
Zavři okno prohlížeče.

Ladik

Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #2 kdy: 07. 01. 2012, 14:43:14 »
Zavři okno prohlížeče.

Klasický návštěvník má otevřených několik tabů v prohlížeči a v roce 2012 mi přijde nevhodné nutit návštěvníka kvůli odhlášení zavírat okno prohlížeče (kdyby stačil ten konkrétní tab, ale on se musí vypnout celý prohlížeč).

Zopper

  • *****
  • 918
    • Zobrazit profil
Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #3 kdy: 07. 01. 2012, 15:17:15 »
Tak nepoužívat HTTP autentizaci, ale sessions (cookies). HTTP autentizace se jinak než vypnutím prohlížeče spolehlivě ukončit nedá - nebo jsem to aspoň nikde neviděl.
Ostatně - HTTP autentizace je v dnešní době doplňků jako LastPass nepraktická, protože doplňky prohlížeče nemohou zasahovat do dialogových oken prohlížeče. ;-)

Zopper

  • *****
  • 918
    • Zobrazit profil
Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #4 kdy: 07. 01. 2012, 15:20:40 »
PS: pokud by vám vadilo, že může někdo s přístupem dát odkaz přímo na obrázek někomu bez přístupu, dá se to řešit jednoduše stylem "files.php?name="obrazek1", kdy tento skript po autorizaci návštěvníka odešle data obrázku i se správným MIME typem (tj bude se chovat jako obrázek), ale bez přihlášení zobrazí chybovou zprávu.


bcd

Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #5 kdy: 07. 01. 2012, 15:25:39 »
Jednoducho, v odhlasovacom linku posli serveru nejake nespravne prihlasovacie udaje..  8)

#

Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #6 kdy: 07. 01. 2012, 15:36:37 »
PS: pokud by vám vadilo, že může někdo s přístupem dát odkaz přímo na obrázek někomu bez přístupu, dá se to řešit jednoduše stylem "files.php?name="obrazek1", kdy tento skript po autorizaci návštěvníka odešle data obrázku i se správným MIME typem (tj bude se chovat jako obrázek), ale bez přihlášení zobrazí chybovou zprávu.
Si myslim, ze tady spis de o absolutni cestu k obrazku teda bla.bla/bla/bla/img/bla.jpg napr tomu timto nezabranis (aspon myslim). Samozrejme by slo pouzit to co pises  ty, s tim, ze original by uzivatel nikdy nevidel a vzdy se pouzila nahodne vygenerovana tmp kopie (snad nerikam to stejny cos mel na mysli :).

RUMjeBUKVA

Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #7 kdy: 07. 01. 2012, 16:01:16 »
PS: pokud by vám vadilo, že může někdo s přístupem dát odkaz přímo na obrázek někomu bez přístupu, dá se to řešit jednoduše stylem "files.php?name="obrazek1", kdy tento skript po autorizaci návštěvníka odešle data obrázku i se správným MIME typem (tj bude se chovat jako obrázek), ale bez přihlášení zobrazí chybovou zprávu.
Si myslim, ze tady spis de o absolutni cestu k obrazku teda bla.bla/bla/bla/img/bla.jpg napr tomu timto nezabranis (aspon myslim). Samozrejme by slo pouzit to co pises  ty, s tim, ze original by uzivatel nikdy nevidel a vzdy se pouzila nahodne vygenerovana tmp kopie (snad nerikam to stejny cos mel na mysli :).

Staci obrazky nahrat do slozky, ve ktere bude htaccess s obsahem "deny from all". Tato direktiva nema zadny vliv na otevreni souboru z php skriptu.

Ladik

Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #8 kdy: 07. 01. 2012, 16:16:33 »
Jednoducho, v odhlasovacom linku posli serveru nejake nespravne prihlasovacie udaje..  8)

Jeslti myslíš něco jiného než toto http://logout@nazevwebu.cz (nefunguje v IE a Opeře), tak pošli konkrétní kód.

Ladik

Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #9 kdy: 07. 01. 2012, 16:30:21 »
PS: pokud by vám vadilo, že může někdo s přístupem dát odkaz přímo na obrázek někomu bez přístupu, dá se to řešit jednoduše stylem "files.php?name="obrazek1", kdy tento skript po autorizaci návštěvníka odešle data obrázku i se správným MIME typem (tj bude se chovat jako obrázek), ale bez přihlášení zobrazí chybovou zprávu.
Si myslim, ze tady spis de o absolutni cestu k obrazku teda bla.bla/bla/bla/img/bla.jpg napr tomu timto nezabranis (aspon myslim). Samozrejme by slo pouzit to co pises  ty, s tim, ze original by uzivatel nikdy nevidel a vzdy se pouzila nahodne vygenerovana tmp kopie (snad nerikam to stejny cos mel na mysli :).

Staci obrazky nahrat do slozky, ve ktere bude htaccess s obsahem "deny from all". Tato direktiva nema zadny vliv na otevreni souboru z php skriptu.

Právě tomuto se potřebuji vyhnout - viz jak jsem psal v původním dotazu:

Zároveň se fotky načítají také do webu na další doméně a než se načte první, tak se vyhodí okno pro přihlášení pšes HTTP autentizaci, což je pro návštěvníka rychlejší než se přihlašovat na jiném webu, aby si na svém foto zobrazil.

V podstatě několik různých webů na vlastních doménách zobrazuje identické fotky z jedné adresy přímo jako http://fotodomena.cz/fotogalerie/nazev.jpg a když se zadá link na fotogalerii na jakékoli doméně, tak si to u první načítané foto vyžádá jméno a heslo.

Re:Odhlášení z HTTP autentizace (Apache + PHP)
« Odpověď #10 kdy: 13. 01. 2012, 14:05:05 »