Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: autoryzacja http przez php
Forum PHP.pl > Forum > PHP
YonasH
Witam

Na poczatku napisze, ze przejrzalem wszystkie 12 stron jakie zwrocila mi wyszukiwarka po wpisaniu "autoryzacja". Na wlasna reke przeszukalem tez google, dokumentacje PHP itp. Polskie i angielskie. Siedze nad tym ponad 5h i nie znalazlem rozwiazania.

Zadanie:
Zabezpieczyc pliki graficzne przed nieautoryzowanym dostepem. Dostep TYLKO z odpowiedniego pliku PHP.

Poprzednie rozwiazanie:
htaccess
  1. RewriteEngine on
  2. RewriteBase /
  3. RewriteCond %{HTTP_REFERER} !^http://(www\.)?domena\.pl/galeria\.php.*$ [NC]
  4. RewriteRule .*\.(jpg)$ http://www.domena.pl/img/galeria/hihi.jpg [R=302,NC]

wszystko ladnie, pieknie smile.gif kazdy nieautoryzowany dostep powoduje wyswietlenie hihi.jpg smile.gif
ale.... u okolo 2-4% userow to nie dziala. problemem sa antywirusy, firewalle i inne duperele, ktore kasuja http_referer :/

Pomysl:
zablokowac dostep do katalogu haslem (http access) i w galeria.php to haslo wpisac. Rozwiazanie transparentne dla usera. Ale JAK?

Probowalem uzyc zarowno curla jak i fsockopen.
Z curlem udalo sie doskonale
  1. <?php
  2. $ch = curl_init();
  3. curl_setopt($ch, CURLOPT_URL, 'http://www.domena.pl/img/galeria/');
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  6. curl_setopt($ch, CURLOPT_USERPWD, 'user:pass');
  7.  
  8. $data = curl_exec($ch);
  9. curl_close($ch);
  10. ?>

jednak przegladarka nie "pamieta" tej autoryzacji :/

z fsockopen w sumie mi sie nie udalo jeszcze...


Wiekszosc... tfu! Wszystkie rozwiazania jakie do tej pory znalazlem polegaly na jednokrotnym dostepie do zablokowanego zasobu. Ja chce dokonac autoryzacji tak, by przegladarka ja pamietala.

Czy znajdzie sie tu mozg, ktory to rozwiaze?

Dzieki i pozdrawiam smile.gif
krowal
A nie lepiej Ci zablokować dostęp całkowicie do katalogu z obrazkami za pomocą .htaccess a na stronie odnosić się do obrazków poprzez skrypt php który za pomocą imagecreatefromjpg(), imagejpeg() i odpowiedniego typu mime będzie Ci zwracał obrazek ?
YonasH
Cytat(krowal @ 26.04.2007, 07:57:01 ) *
A nie lepiej Ci zablokować dostęp całkowicie do katalogu z obrazkami za pomocą .htaccess a na stronie odnosić się do obrazków poprzez skrypt php który za pomocą imagecreatefromjpg(), imagejpeg() i odpowiedniego typu mime będzie Ci zwracał obrazek ?

jak potem uzyc takiego obrazka w kodzie html? mam utworzyc obrazek temp?

Czy zrobic cos w stylu:
  1. <img src="obrazek.php?id=x">

a w php headerami zmienic typ na jpeg questionmark.gif

Jak zwrocic taki wygenerowany obrazek? Bo udalo mi sie odczytac jpga przy pomocy curla (w formie tekstowej winksmiley.jpg ) gdybym potrafil to wygenerowane wyjscie uzyc w <img> to mialbym sprawe rozwiazana winksmiley.jpg
krowal
Cytat
jak potem uzyc takiego obrazka w kodzie html? mam utworzyc obrazek temp?

Dokładnie tak jak napisałeś czyli:
  1. <img src="obrazek.php?id=x'>

a obrazek.php może wyglądać tak:
  1. <?php
  2. $imgname = $_GET['x']; //tutaj x musi byc sciazka do pliku, ale moze to byc np id obrazka ktorego adres j
    est trzymany w bazie danych
  3. $im = imagecreatefromjpeg($imgname);
  4. header('Content-type: image/jpeg');
  5. imagejpeg($im);
  6. imagedestroy($im);
  7. ?>

i bez zabawy w jakieś curle smile.gif
legorek
1) Zapisujesz w sesji np $_SESSION['foo'] = true;
2) <img src="provider.php?id=bar">
3) provider.php:
  1. <?php
  2. if ($_SESSION['foo']) {
  3. $file = fopen($_GET['id'].'jpg', 'rb');
  4. header('Content-type: image/jpeg');
  5. fpassthru($file);
  6. } else {
  7.  
  8. ...
  9. ...
  10.  
  11. }
  12. ?>


To prosty przykład. Pamiętaj o:

1)bezpieczeństwie, zawsze sprawdzaj, czy to co wyświetlasz nie jest przypadkiem czymś czego user nie powinien zobaczyć.

2)odpowiednich nagłówkach
YonasH
dziala biggrin.gif
dzieki wielkie smile.gif zapraszam do Dublina na Guinessa :]

dodam do obrazek.php sprawdzanie ciasteczek itp. i bedzie git winksmiley.jpg




pytanko:
jakie jest obciazenie serwera takimi funkcjami?



@legorek - o bezpieczenstwie zawsze pamietam winksmiley.jpg dzieki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.