Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie pobierania pliku
Forum PHP.pl > Forum > PHP
CamLinux
Witam,
od godziny męczę się i szukam sposoby, aby zapezpieczyć plik powiedzmy hasłem, znalazłem taki skrypt, do folderu gdzie jest dany plik wrzucam plik .htaccess i w nim daję: deny from all.
I jest ok pliku linkiem pobrać sie nie da, ale chciałbym dać możliwość w inny sposób, taki skrypt znalazłem:
  1. if(isset($_GET['pobierz'])) {$pobierz=$_GET['pobierz'];
  2. $sciezka=basename('zabezpieczony_folder/'.$pobierz);
  3. if(file_exists($sciezka)) {
  4. $open=fopen($sciezka,'rb');
  5. flock($open,1);
  6. $zawartosc=fread($open,filesize($sciezka));
  7. flock($open,3);
  8. fclose($open);
  9.  
  10. header('Content-Type: application/octet-stream');
  11. header('Content-Length: '.strlen($zawartosc));
  12. header('Content-Disposition: attachment; filename='.$pobierz);
  13. echo $zawartosc;
  14. exit;}}


Niestety to nie działa, wie ktoś dlaczego ? Może jest inny sposób...
Zależy mi z góry dzięki
memory
chmod 600 - zablokowany, chmod 644 - odblokowany plik
chmod
sylwekqaz
w drugiej linijce masz basename który robi za zabezpieczenie przed chociażby przed '../config.php'
powinno być tak
  1. $sciezka='zabezpieczony_folder/'.basename($pobierz);
Pilsener
A próbowałeś:
  1. echo $sciezka;
?


I tak w ogóle to kiepski ten skrypt i całe podejście thumbsdownsmileyanim.gif

Np. to:
  1. $open=fopen($sciezka,'rb');
  2. flock($open,1);
  3. $zawartosc=fread($open,filesize($sciezka));
  4. flock($open,3);
  5. fclose($open)


Da się prościej:
  1. $zawartosc = file_get_contents($sciezka);


Cytat
w drugiej linijce masz basename który robi za zabezpieczenie przed chociażby przed '../config.php'
- no tak, bo trzeba się jakoś tam zabezpieczyć przed niewłaściwymi parametremami ( np. ścieżka zamiast nazwy) niż dopuścić tylko ten właściwy smile.gif
CamLinux
sylwekqaz dzięki Ci wielkie Lkingsmiley.png wszystko śmiga biggrin.gif
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.