Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Plan na przechowywanie plików -proszę o krytykę-
Morfi777
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 1
Dołączył: 5.09.2007

Ostrzeżenie: (0%)
-----


Hej!

Chciałem napisać skrypt do zarządzania plikami w którym nie byłoby ograniczeń co do rodzaju pliku, wobec tego żaden z nich nie może być dostępny pod direct link.
System powinien też móc ograniczyć możliwość ściągnięcia pliku: gościom/użytkownikom/grupom.

Najlepszą opcją zakładam, że byłoby secure_download(nginx) lub mod_secdownload (lighthttpd), ale zakładam, że nie mam dostępu do webserwera a provider jest siusiakiem i nie będzie robił wyjątków ani nie dogra tego.

Chciałbym mieć możliwość wrzucania dowolnych rodzajów plików. Pomysł jest następujący.
Tworzę katalog /files/ który dostaje Auth (zabezpieczenie direct linkowania, jako Auth rozumiem mod_auth w apache lub odpowiednik).
plik dl.php?path=__________ będzie służył do wyciągania plików z katalogu /files/

  1. <?php
  2.  
  3. function CheckAuth($sess)
  4. {
  5. ble ble ble...
  6. return $dir;
  7. }
  8.  
  9. $access = CheckAuth($_SESSION[costam]);
  10.  
  11. $file = 'files/' . $access . str_replace(array(chr(0),'../'), '', $_GET["file"]);
  12.  
  13. if (file_exists($file)) {
  14. header('Content-Description: File Transfer');
  15. header('Content-Type: application/octet-stream');
  16. header('Content-Disposition: attachment; filename='.basename($file));
  17. header('Content-Transfer-Encoding: binary');
  18. header('Expires: 0');
  19. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  20. header('Pragma: public');
  21. header('Content-Length: ' . filesize($file));
  22. flush();
  23.  
  24.  
  25. readfile($file);
  26. }
  27. else
  28. die('no cze');
  29.  
  30. ?>


Plik sprawdza poziom dostępu wrzucając użytkownika do oddzielnego katalogu (oczywiście będzie to rozwiązane mądrzej, ale zamysł ten sam -- przydzielanie dostępu do dir po sesji), geta też nie będzie, ale escape`y zostają.

Listowanie plików z bazy danych (nie z listowania dir).



To taki szybki zamysł, a może mamy coś lepszego ? (IMG:style_emoticons/default/smile.gif)


Dzięki!

Ten post edytował Morfi777 5.12.2011, 17:31:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Morfi777
post
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 1
Dołączył: 5.09.2007

Ostrzeżenie: (0%)
-----


Racja, ten ID będzie dużo bezpieczniejszym wyjściem.

Myślałem, też nad zmianą nazw plików po wrzuceniu na ciąg (np md5) tak aby pliki na serwerze były bez rozszerzeń. Dopiero przy pobieraniu, header podrzuci właściwą nazwę pliku.
Pomysł jest Ok, czy za dużo szczęścia na raz?

--
Michał
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 10:42