Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Załącznik wgrywany na serwer. Jakie rozszerzenia dopuszczać?, Czy ograniczać użytkownikom format ładowanych plików?
luis2luis
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Witam.
Piszę mechanizm do wysyłania wiadomości pomiędzy poszczególnymi użytkownikami. Zalaczniki sa ladowane na serwer.

Czy mam w jakiś sposób ograniczać format ładowanych plików?
Czy folder do którego ładuje pliki musi mieć odpowiednie uprawnienia? tzn brak wykonania? Proszę o podpowiedź.

Chce za wszelką cenę uniknąć możliwość ataku na strone.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Niree
post
Post #2





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


No tak. Plik, który tworzy kolejne pliki musi mieć odpowiednie chmody.

Rozszerzenia najlepiej te znane, typu jpeg, jpg, png, txt, doc.
Albo wyklucz php, js, html, xml i inne.
Go to the top of the page
+Quote Post
viking
post
Post #3





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


A co mają chmody do tego? Plik żeby dało radę go wyświetlić musi być co najmniej do odczytu. A skoro tak to można go dowolnie wykonać.


--------------------
Go to the top of the page
+Quote Post
luis2luis
post
Post #4





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Cytat(viking @ 15.12.2016, 06:38:27 ) *
A co mają chmody do tego? Plik żeby dało radę go wyświetlić musi być co najmniej do odczytu. A skoro tak to można go dowolnie wykonać.



Z tego co mi wiadomo , to chmod matrzy poziomy "zezwoleń" CZYTAJ -> ZAPISZ -> WYKONAJ.
Wykonaj to nie jest "obsłuż przez parser php"? Albo inaczej, Bez opcji wykonaj, plik jest zwracany jako czysty tekst bez przetwarzania?


CHMOD GENERATOR
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Zależy od konfiguracji serwera. Jeśli np pracuje jako Fastcgi skrypt deleguje wykonywanie do procesu.


--------------------
Go to the top of the page
+Quote Post
luis2luis
post
Post #6





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Cytat(Niree @ 15.12.2016, 05:40:19 ) *
No tak. Plik, który tworzy kolejne pliki musi mieć odpowiednie chmody.

Rozszerzenia najlepiej te znane, typu jpeg, jpg, png, txt, doc.
Albo wyklucz php, js, html, xml i inne.


to że plik musi mieć mołżiwośc zapisu. ale nto nie jest problem.

Problem jest, że ktoś mi uploaduje plik php i wykona sobie swój kod.

Cytat(Niree @ 15.12.2016, 05:40:19 ) *
No tak. Plik, który tworzy kolejne pliki musi mieć odpowiednie chmody.

Rozszerzenia najlepiej te znane, typu jpeg, jpg, png, txt, doc.
Albo wyklucz php, js, html, xml i inne.


Tak, tylko, że jest jeszcze *.docx, *.xlsx, i mase inych z samego pakietu office, dodatkowo *.php4, *.php5, *.php7 i ciul wie co jeszcze ktoś możewymyśleć.
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Sprawdzanie masz robić po content-type a nie rozszerzeniach.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


samo content-type też nie jest bezpieczne. Bo taki np. pliczek JPG może mieć zaszyty wykonywalny kod.
Go to the top of the page
+Quote Post
viking
post
Post #9





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


To tak na początek wink.gif


--------------------
Go to the top of the page
+Quote Post
luis2luis
post
Post #10





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Cytat(Pyton_000 @ 15.12.2016, 12:49:08 ) *
samo content-type też nie jest bezpieczne. Bo taki np. pliczek JPG może mieć zaszyty wykonywalny kod.


Datego chce odgórnie zablokować wszystko co może być wykonalne na serwerze.

Pokolei poprawiam bezpieczeństwo poszczególnych elementów systemu i teraz przyszedłczas na to upload plików.
Bede chciał na stronie uruchomić na użytkowników manager plików, żeby mogli zarządzać swoimi plikami, tu tez bedzie podobna kwestia bezpieczeństwa.
Go to the top of the page
+Quote Post
Pilsener
post
Post #11





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Cytat
Problem jest, że ktoś mi uploaduje plik php i wykona sobie swój kod.

Jeśli jest taka możliwość, to problem leży w aplikacji/konfiguracji serwera a nie w pliku. Bezpieczeństwo nie powinno być zależne od pliku i ratowanie się sprawdzaniem jego zawartości czy rozszerzenia to co najwyżej doraźna proteza.
Plik wrzucasz po prostu na serwer a gdy użytkownik chce go pobrać to aplikacja go odczytuje i mu wysyła - nie widzę tu żadnego zagrożenia.
Natomiast widziałem wiele razy, jak plik był walidowany na 50 sposobów (co powodowało frustrację użytkowników bo zawsze jakiś plik nie przechodził walidacji) po czym wrzucany do .... publicznego katalogu! facepalmxd.gif
Go to the top of the page
+Quote Post
krzywy5830
post
Post #12





Grupa: Zarejestrowani
Postów: 38
Pomógł: 5
Dołączył: 14.10.2012

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


Pisałem kiedyś taki upload plików, że użytkownik uploaduje plik i może komuś udostępnić do niego linka. Pliki trzymałem katalog wyżej niż public_html (nie na każdym serwerze to działa, zależy od konfiguracji, jeśli nie działa to można dać .htaccess z deny from all w folderze z plikami). Poza tym każdy plik dostawał losową nazwę i był przechowywany na serwerze bez rozszerzenia, np. ktoś wgrał plik "ziemniak.php: a na serwerze był przechowywany jako "jiofjwefwf4we6504v6870ef". Wszystkie informacje o plikach (takie jak jego prawdziwa nazwa i rozszerzenie) były przechowywane w bazie danych. Do pobierania plików napisałem sobie skrypt download.php, w którym przesyłałem odpowiednie nagłówki i takie tam. Dzięki temu żaden Janusz nie dobierze się do pliku korzystając z adresu np. www.strona.pl/upload/ziemniak.php i nie wywoła żadnego złośliwego kodu. Aby dobrać się do pliku trzeba było użyć adresu www.strona.pl/download.php?id=69. Skrypt download.php zamiast wywoływać kod zawarty w pliku ziemniak.php od razu go pobierał na komputer użytkownika lub w przypadku gdy był to obrazek lub plik .pdf to wyświetlał go w przeglądarce (sprawdzanie typu MIME i odpowiednie instrukcje warunkowe).
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 Aktualny czas: 21.08.2025 - 02:51