![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
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.
-------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
1. Możesz umożliwić ściąganie takiego pliku tylko z danego IP
2. Nie wystawiać pliku do ściągania ![]() Innych możliwości nie widzę czyli wychodzi na to, że się nie da ^-^ |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
hm a jakby dany plik skrypt skopiowal w konkretne miejscce na pewien czas taki plik tymczasowy i np po 5 min usunął go, teraz pytanie jak zabezpieczyc plik zrudłowy aby mi go nikt nie wykradł, jakby ktos wiedział jak zrobic taki system podobny ro Rapida ;/
-------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Czekaj czekaj.. chcesz udostępnić plik tylko osobie zalogowanej, która wykupiła ten bonus? jeżeli tak to wystarczy link typu index.php?p=download&file=10000
w pliku download [tym ze ścieżki] : - umieszczasz sprawdzanie czy użytkownik jest zalogowany - pobieranie z bazy danych adresu pliku o id = 10000 - sprawdzenie czy użytkownik jest autoryzowany do ściągnięcia tego pliku - wysłanie pliku Ten post edytował CuteOne 2.10.2010, 12:05:16 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
- sprawdzenie czy użytkownik jest autoryzowany do ściągnięcia tego pliku
co masz w tym podpuncie na mysli jak taka autoryzacje wykonac? -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 14.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Na przykład tworzysz 3 tabele:
-użytkownicy -pliki -uzytkownicy_pliki (id_uzytkownika, id_pliku) Gość najpierw się loguje do systemu, a później sprawdzasz czy może plik o danym ID ściągnąć czyli czy jest w tabeli uzytkownicy_pliki odpowiedni rekord. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
no tak to jest jane ale chodzi mi tez o to aby ten link do pliku nie wszedl w siec tak aby kazdy mogl go sciagnac
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
no tak to jest jane ale chodzi mi tez o to aby ten link do pliku nie wszedl w siec tak aby kazdy mogl go sciagnac To dodaj do crontaba zadanie które będzie usuwać. Czas expire linku licz dla 1Mb, np.: 700*1024/120 ~= 5973sec Teraz pobierasz czas za pomocą time(), dodajesz wynik i zapisujesz clay timestamp do mysql. W skrypcie odpalanym z crontaba sprawdzasz wszystkie rekordy po kolei i czy ich expire_time jest < lub = aktualnemu czasowi. Jeśli tak usuwasz rekord. -------------------- flexiCMS v2 [|||||||+--] 75% done
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
tworzysz sobie download.php gdzie Twoj skrypt wysyla plik o ktory go prosza
unikalny link do pliku robisz tak: 1. dodajesz sol do linka, hashujesz go 2. linki do pliku beda postaci download.php?plik=nazwapliku&hash=generowanyhash 3. przed wyslaniem pliku sprawdzasz czy hash sie zgadza unikalny link do pliku dla zalogowanego uzytownika tak: 1. dodajesz sol do linka ORAZ dodajesz do tego id zalogowanego usera, hashujesz go 2. linki do pliku beda postaci download.php?plik=nazwapliku&hash=generowanyhash 3. przed wyslaniem pliku sprawdzasz czy hash sie zgadza unikalny link do pliku z terminem waznosci, dla zalogowanego usera tak: 1. dodajesz sol do linka ORAZ dodajesz do tego id zalogowanego usera ORAZ dodajesz czas wygenerowania linku, hashujesz go 2. linki do pliku beda postaci download.php?plik=nazwapliku&hash=generowanyhash&czaswygenerowania=czas 3. przed wyslaniem pliku sprawdzasz czy hash sie zgadza i czy czas jest odpowiednio ustawiony w stosunku do czasu aktualnego przez sam link rozumiem download.php?plik=nazwapliku, dlatego w przypadku trzecim oddzielilem hashowanie linku od hashowania czasu, ale nic nie stoi na przeszkodzie zeby hashowac calosc jak leci - nawet jest to wskazane mozesz uzyc do tego wszystkie takze bazy danych i sprawdzac czy linki spelniaja warunki jakie tylko sobie wymyslisz, ale jak widac - nie musisz Ten post edytował yevaud 3.10.2010, 13:10:01 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 14.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
unikalny link do pliku z terminem waznosci, dla zalogowanego usera tak: 1. dodajesz sol do linka ORAZ dodajesz do tego id zalogowanego usera ORAZ dodajesz czas wygenerowania linku, hashujesz go 2. linki do pliku beda postaci download.php?plik=nazwapliku&hash=generowanyhash&czaswygenerowania=czas 3. przed wyslaniem pliku sprawdzasz czy hash sie zgadza i czy czas jest odpowiednio ustawiony w stosunku do czasu aktualnego Dobrze rozumiem, że ten celem tego hash'a jest weryfikacja czy zmienna w czaswygenerowania jest poprawnym (niezedytowanym przez złośliwego usera) czasem? Bardzo fajny i przydatny pomysł. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
no fajny i ciekawy tylko teraz ja musze pomyslec jak ten twoj post odhashowac ;d
-------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hej,
opisze troche dokladniej o co mi chodzi Cytat Dobrze rozumiem, że ten celem tego hash'a jest weryfikacja czy zmienna w czaswygenerowania jest poprawnym (niezedytowanym przez złośliwego usera) czasem? dokladnie tak, w tym przypadku hash'a uzywam podobnie jak podpisu cyfrowego. Unikalna sol(sól) uniemozliwia uzytkownikom podrobienie hasha/podpisu generalnie widzialbym to jakos tak(pisze z palca tama wersje mocno robocza), wersja dla zalogowanego usera
Ten post edytował yevaud 4.10.2010, 00:54:54 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
a jak moge zabezpieczyc folder w którym beda znajdowaly sie pliki z danymi? CHMOD? jesli tak to jaki powinien byc? a i na poczatku ten salt mogłby byc np losowym ciagiem znakow byloby bezpieczniej
![]() Ten post edytował jawka7 4.10.2010, 02:40:10 -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
dane nie musza byc w ogole dostepne z poziomu http, wazne zeby php mialo do nich dostep
sugerujesz ze ten salt nie jest losowy ? |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
mozna zmodyfikowac troche twoj skrypt
![]() $salt = md5(uniqid(rand(), true)); zapisac salt do sesji i przy wywolaniu linku zrobic tak aby nie wygenerowal sie nowy salt tylko aby sprawdzal aktualny i czy z nim si ezgadza wygeberowany link ![]() -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
mozna, wtedy link bedzie dzialal tak dlugo jak istnieje sesja uzytkownika
|
|
|
![]()
Post
#17
|
|
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 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
z tym ze te z hash rozumiem a twoich nie
![]() -------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa 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. 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 ![]() sugerujesz ze Twoje rozwiazanie Cytat
jest bardziej skomplikowane niz moje ktore zapronowalem zeby wysylac 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 ![]() |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
Jak dla mnie bardziej widzi sie twoj skrypt yevaud ktory mi podałes a co do header'ow nie chce krytykowac bo byc moze jest to lepsze moze nie ale ja nie wglebilem sie jeszcze w ten dział php
![]() Jak dla mnie na tym forum powinien byc podany jakis artykul o tej tematyce zabezpieczen plikow. I tu jest mój apel do administracji ;P Dziekuje serdecznie za pomoc odłóżcie kosy na bok, TEMAT ZAMYKAM ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 05:44 |