Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] pobieranie pliku po zalogowaniu się
jarmiar
post 7.06.2007, 12:28:17
Post #1





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


Wiem że było kilka już takiech tematów na forum, więc postanowiłem napisać jeszcze jeden, który rozwiąże Wasze wątpliwości.

Wiele z Was pyta jak zabezpieczyć plik przed ściągnieciem przez nieupoważnione osoby?

Zaczynamy!

Do tego napisałem prosty skrypt, który pozwoli to wykonać:

http://url.bee.pl/uyf

(pozwoliłem sobie na podanie adresu do pliku na serwerze, ponieważ przy wpisywaniu tego kodu na forum, skrypt doklejał niepotrzebne tagi co mogłoby być przyczyną niewłaściwego działania kodu)

Teraz chcąc pobrać jakiś plik musimy wskazać adres w przeglądarce:

skrypt.php?id=nazwa_pliku.zip

Jeżeli użytkownik wskazujący plik będzie zalogowany to będzie mógł go ściągnąć. Jeśli będzie odwrotnie pojawi mu się stosowny komunikat.
Co prawda ten skrypt można znacząco rozbudować, ja jednak podałem tylko wzór.

Mam nadzięję, że ten post pomógł Wam!

Pozdrawiam smile.gif
Jarmiar


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
^bmb
post 7.06.2007, 12:41:47
Post #2





Grupa: Zarejestrowani
Postów: 69
Pomógł: 2
Dołączył: 12.12.2005

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


nazwa pliku w parametrze GET? smile.gif)))))))
Weź może chociaz waliduj to co przychodzi w tym parametrze bo jak w takim stanie skryptu bedziesz uzywal to ci sciagna pare innych rzeczy niz to co myslisz winksmiley.jpg


--------------------
Cogito Ergo Sum
Go to the top of the page
+Quote Post
jarmiar
post 7.06.2007, 12:46:10
Post #3





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


Cytat(^bmb @ 7.06.2007, 13:41:47 ) *
nazwa pliku w parametrze GET? smile.gif )))))))
Weź może chociaz waliduj to co przychodzi w tym parametrze bo jak w takim stanie skryptu bedziesz uzywal to ci sciagna pare innych rzeczy niz to co myslisz winksmiley.jpg



patrzyłeś uważnie na zawartośc skryptu?questionmark.gif

nie sądze!

wydzieliłem tam specjalną zmienną $sciezka i ona będzie prowadziła do katalogu z plikami, które będzie można ściągnąć po zalogowaniu się winksmiley.jpg


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
^bmb
post 7.06.2007, 12:52:03
Post #4





Grupa: Zarejestrowani
Postów: 69
Pomógł: 2
Dołączył: 12.12.2005

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


Cytat(jarmiar @ 7.06.2007, 11:46:10 ) *
patrzyłeś uważnie na zawartośc skryptu?questionmark.gif

nie sądze!

wydzieliłem tam specjalną zmienną $sciezka i ona będzie prowadziła do katalogu z plikami, które będzie można ściągnąć po zalogowaniu się winksmiley.jpg


wiec nie zadziała np. skrypt.php?id=../../<twoj_skrypt> ?

smile.gif


--------------------
Cogito Ergo Sum
Go to the top of the page
+Quote Post
jarmiar
post 7.06.2007, 12:56:06
Post #5





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


Cytat(^bmb @ 7.06.2007, 13:52:03 ) *
wiec nie zadziała np. skrypt.php?id=../../<twoj_skrypt> ?

smile.gif



jasne że w ten sposób można sciągnąć parę plików, ale kto będzie się w to bawiłquestionmark.gifexclamation.gif

a po drugie nawet gdyby ściągnąć coś chciał to musi znać strukturę katalogów na serwerze i przy ściaganiu plików php nie zobaczy kodu php tylko wygenerowany przez zerwer kod html.

więc myślę że jest wystarczający ten mój skrypt.


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
^bmb
post 7.06.2007, 13:04:06
Post #6





Grupa: Zarejestrowani
Postów: 69
Pomógł: 2
Dołączył: 12.12.2005

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


Cytat(jarmiar @ 7.06.2007, 11:56:06 ) *
jasne że w ten sposób można sciągnąć parę plików, ale kto będzie się w to bawiłquestionmark.gifexclamation.gif


Możesz mi wierzyć że jest sporo ludzi którzy lubią się tak pobawić smile.gif

Cytat(jarmiar @ 7.06.2007, 11:56:06 ) *
a po drugie nawet gdyby ściągnąć coś chciał to musi znać strukturę katalogów na serwerze i przy ściaganiu plików php nie zobaczy kodu php tylko wygenerowany przez zerwer kod html.


A co stoi na przeszkodzie żeby popróbować kilka razy z ilościa np ../

Cytat(jarmiar @ 7.06.2007, 11:56:06 ) *
więc myślę że jest wystarczający ten mój skrypt.


Spoko Twoja sprawa...zależy kogo uważasz za grupę docelowąsmile.gif

Zresztą może inni użytkownicy się wypowiedzą
Pozdrawiam smile.gif


--------------------
Cogito Ergo Sum
Go to the top of the page
+Quote Post
Darti
post 8.06.2007, 03:12:47
Post #7





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Jest:
  1. <?php
  2. header('Content-Disposition: attachment; filename='.$sciezka.'/'.$id);
  3. ?>

powinno być:
  1. <?php
  2. header('Content-Disposition: attachment; filename="'.$sciezka.'/'.$id.'"');
  3. ?>


Poza tym na dorzuciłbym jakiś readfile(); bo użytkownik dostanie plik ... ale o wielkości 0 kB blinksmiley.gif
No i dodał bym:
  1. <?php
  2. header("Content-Length: ". filesize($sciezka.'/'.$id));
  3. ?>
coby użytkownik wiedział jakiej długości dostanie plik i miał fajny pasek pobierania.
Mime-Type tez przydało by się zmienić na akurat wysyłany plik ...

edit:
Zapomniałem jeszcze o sytuacji kiedy nazwa pliku zawiera spację winksmiley.jpg

I na koniec: dopisuję się do uwag ^bmb

Ten post edytował Darti 8.06.2007, 03:24:03


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 03:09