Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] szyfrowane pobieranie pliku
jawka7
post
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 23.08.2007
Skąd: Częstochowa/Dubidze

Ostrzeżenie: (70%)
XXXX-


witam chciałbym zrobic w moim serwisie cos takiego ze jesli dane konto wykpoiło dany skrypt to ma mozliwosc go pobrania ewentualnie generuje mu unikalny link do skryptu.. jednak tak aby tego pliku nie mozna bylo udostepnic osob trzecim.. jak sie za to zabrac? nigdy nie mialem do czynienia z podobnym skryptem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dariuszp
post
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 9.09.2010

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


1. PYTANIE DO KOMENTUJĄCYCH
Dlaczego Wy tak bardzo komplikujecie tak prostą sprawę ? Trzeba mieć masochistyczne skłonności by skorzystać z którejkolwiek rady. Oczywiście to moje subiektywne zdanie.

2. PYTANIE DO AUTORA
Czy masz możliwość wprowadzania zmian na serwerze produkcyjnym ? (tam gdzie ma to wszystko działać, bo jasne że z serwerem testowym robisz co chcesz).

3. SUGESTIA
Zapoznajcie się z tematem odrobinę zanim zaczniecie dawać dziwne rady. Przez chwilę myślałem że z autora tematu się po prostu nabijacie (moja subiektywna ocena).

4. MOJA RADA - JEŻELI NIE MASZ MOŻLIWOŚCI WPROWADZANIA ZMIAN NA SERWERZE
Jeżeli chodzi o bardzo małe pliki to można wykorzystać PHP. Za pomocą header wysyłasz odpowiednie nagłówki takie jak:

Kod
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Description: File Transfer");
header("Content-Length: ".filesize($url));
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment; filename=\"".basename($url)."\"");


Następnie za pomocą fopen() otwierasz sobie plik który jest pod $url i w pętli linia po linii wypisujesz go. Tu należy pamiętać o drobiazgu. NIC przed lub PO pliku nie powinno zostać wyświetlone. Jeden durny biały znak i plik będzie błędnie zapisany u użytkownika. Z uwagi na to że będziesz korzystał z pętli a sam plik chwilę się będzie wypisywał użytkownikowi, możesz przekroczyć czas działania skryptu PHP co również zniszczy zawartość pliku (przerwany transfer + dodatkowe znaki jak treść błędu itp, kwestia ustawień serwera).

Użytkownik nie dostanie bezpośredniego linku na serwerze. Sam plik może być trzymany w dowolnym miejscu. Dodatkowo możesz w dowolny sposób decydować czy rozpocząć jego wysyłanie użytkownikowi czy nie.

5. MOJA RADA 2 - JEŻELI MOŻESZ WPROWADZAĆ ZMIANY NA SERWERZE
Metoda 1 ma jedną wadę. Nie wyślesz nią dużych plików a im gorszy transfer ma użytkownik tym większa szansa że wystąpi problem. Istnieje sposób na jego ominięcie. Trzeba sobie doinstalować rozszerzenie xSendFile do Apache. O xSendFile poczytasz w Google. Sporo piszą na jego temat. Jak nic się nie zmieniło to obecna wersja pozwala na wysyłanie plików DO 4GB. Wersja beta przekracza ten limit pozwalając na wysyłanie na prawdę dużych plików.


Co do całej reszty to już Twoja wola jak to zabezpieczysz. Obie metody są wygodne i pewne.

Ten post edytował dariuszp 4.10.2010, 13:56:49
Go to the top of the page
+Quote Post
yevaud
post
Post #3





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


Cytat(dariuszp @ 4.10.2010, 14:56:18 ) *
1. PYTANIE DO KOMENTUJĄCYCH
Dlaczego Wy tak bardzo komplikujecie tak prostą sprawę ? Trzeba mieć masochistyczne skłonności by skorzystać z którejkolwiek rady.

kolega pytal o to jak zabezpieczyc dostep do plikow, od Ciebie otrzymal odpowiedz jak wysylac pliki za pomoca php. Sprawy sa oczywiscie powiazane, ale generalnie to co ma piernik do wiatraka. Pomysly byly rozne, ale dotyczyly tematu (IMG:style_emoticons/default/smile.gif)

sugerujesz ze Twoje rozwiazanie
Cytat
  1. Następnie za pomocą fopen() otwierasz sobie plik który jest pod $url i w pętli linia po linii wypisujesz go. Tu należy pamiętać o drobiazgu. NIC przed lub PO pliku nie powinno zostać wyświetlone. Jeden durny biały znak i plik będzie błędnie zapisany u użytkownika. Z uwagi na to że będziesz korzystał z pętli a sam plik chwilę się będzie wypisywał użytkownikowi, możesz przekroczyć czas działania skryptu PHP co również zniszczy zawartość pliku (przerwany transfer + dodatkowe znaki jak treść błędu itp, kwestia ustawień serwera).


jest bardziej skomplikowane niz moje ktore zapronowalem zeby wysylac plik?
  1. header('Content-type itp');
  2. readfile($plik);

oczywiscie headery wstawiasz jakie potrzebujesz, nie znamy nawet mime tych plikow

Cytat
Dodatkowo możesz w dowolny sposób decydować czy rozpocząć jego wysyłanie użytkownikowi czy nie.[...]Co do całej reszty to już Twoja wola jak to zabezpieczysz

tylko ze kolega pytal jak zabezpieczyc, wiec o ta cala reszte ktora raczyles pominac

Cytat
Trzeba sobie doinstalować rozszerzenie xSendFile do Apache. O xSendFile poczytasz w Google. Sporo piszą na jego temat. Jak nic się nie zmieniło to obecna wersja pozwala na wysyłanie plików DO 4GB. Wersja beta przekracza ten limit pozwalając na wysyłanie na prawdę dużych plików.

jedyna rzecz ktora wnosi cos do tematu (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- jawka7   [php] szyfrowane pobieranie pliku   2.10.2010, 00:17:14
- - CuteOne   1. Możesz umożliwić ściąganie takiego pliku tylko ...   2.10.2010, 02:51:40
- - jawka7   hm a jakby dany plik skrypt skopiowal w konkretne ...   2.10.2010, 07:59:19
- - CuteOne   Czekaj czekaj.. chcesz udostępnić plik tylko osobi...   2.10.2010, 12:03:45
- - jawka7   - sprawdzenie czy użytkownik jest autoryzowany do ...   2.10.2010, 22:26:58
- - andycole   Na przykład tworzysz 3 tabele: -użytkownicy -pliki...   3.10.2010, 00:21:48
- - jawka7   no tak to jest jane ale chodzi mi tez o to aby ten...   3.10.2010, 08:27:11
|- - kiler129   Cytat(jawka7 @ 3.10.2010, 09:27:11 ) ...   3.10.2010, 12:15:42
- - yevaud   tworzysz sobie download.php gdzie Twoj skrypt wysy...   3.10.2010, 13:06:57
|- - andycole   Cytat(yevaud @ 3.10.2010, 12:06:57 ) ...   3.10.2010, 21:01:29
- - jawka7   no fajny i ciekawy tylko teraz ja musze pomyslec j...   4.10.2010, 00:25:48
- - yevaud   Hej, opisze troche dokladniej o co mi chodzi Cyta...   4.10.2010, 00:53:07
- - jawka7   a jak moge zabezpieczyc folder w którym beda znajd...   4.10.2010, 02:36:40
- - yevaud   dane nie musza byc w ogole dostepne z poziomu http...   4.10.2010, 04:19:14
- - jawka7   mozna zmodyfikowac troche twoj skrypt $salt...   4.10.2010, 09:29:57
- - yevaud   mozna, wtedy link bedzie dzialal tak dlugo jak ist...   4.10.2010, 11:05:55
- - dariuszp   1. PYTANIE DO KOMENTUJĄCYCH Dlaczego Wy tak bardzo...   4.10.2010, 13:56:18
|- - yevaud   Cytat(dariuszp @ 4.10.2010, 14:56:18 ...   6.10.2010, 17:20:52
- - jawka7   z tym ze te z hash rozumiem a twoich nie czy plik...   4.10.2010, 18:00:36
- - jawka7   Jak dla mnie bardziej widzi sie twoj skrypt yevaud...   7.10.2010, 12:49:27


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: 7.10.2025 - 21:03