Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] pobieranie pliku po zalogowaniu się
jarmiar
post
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jarmiar
Go to the top of the page
+Quote Post
^bmb
post
Post #2





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

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


nazwa pliku w parametrze GET? (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
jarmiar
post
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? (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)



patrzyłeś uważnie na zawartośc skryptu?(IMG:http://forum.php.pl/style_emoticons/default/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ę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
^bmb
post
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?(IMG:http://forum.php.pl/style_emoticons/default/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ę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


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

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
jarmiar
post
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> ?

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)



jasne że w ten sposób można sciągnąć parę plików, ale kto będzie się w to bawił(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/exclamation.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.
Go to the top of the page
+Quote Post
^bmb
post
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ł(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)


Możesz mi wierzyć że jest sporo ludzi którzy lubią się tak pobawić (IMG:http://forum.php.pl/style_emoticons/default/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ą(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zresztą może inni użytkownicy się wypowiedzą
Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Darti
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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ę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

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

Ten post edytował Darti 8.06.2007, 03:24:03
Go to the top of the page
+Quote Post

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: 6.10.2025 - 15:32