Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Upload a zabezpieczenia
d.stp
post
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

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


Mam skrypt uploadu plików na swojej stronie. Chodzi o to żeby to było maksymalnie bezpieczne. Wiem, że jest tego cała masa w necie, ale w moim przypadku jest trochę inaczej, ponieważ pliki przechowuję poza dostępem do http (ponad public_html). Dostępne ma być tylko pobieranie tego pliku, ale to już sobie ogarnę przez header() w PHP z odpowiednimi nagłówkami. Nie wiem czy dobrze rozumuje to, ale skoro pliku nie można odpalić przez http to tak naprawdę nawet jak ktoś wrzuci shella na serwer to nie odpali go, tak?

Pliki można wrzucać każdego formatu, nawet tego nie sprawdzam co to są za pliki (powinienem?). Chcę dać użytkownikowi możliwość wrzucania każdego pliku na serwer.

O czym powinienem pamiętać tworząc takiego typu upload? Pliki wrzucane mogą mieć gigantyczne rozmiary, bo nawet do 10gb.

Są to bardzo ważne dla mnie pliki i ich wydostanie się grozi dla mnie poważnymi skutkami także wolę się upewnić czy wszystko robię dobrze, a nie chciałbym żeby ktoś mi shella wrzucił czy inne tego typu.

Mam też drugi uploader, z tym że tam mogą być wrzucane tylko zdjęcia. Więc będę sprawdzał po pliku czy jest na pewno obrazem i jakie ma rozszerzenie. Wprowadzę dozwolone rozszerzenia, ale czy to na pewno wystarczy? Słyszałem kiedyś o czymś takim, że w obrazku można umieścić jakiś kod wykonywalny, jak się przed tym odpowiednio zabezpieczyć?

z góry dzięki za podpowiedzi
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
patry6123
post
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


Co do 2 opcji to wystarczy, że zmienisz rozszerzenie z sh na jpg i już masz plik z właściwym rozszerzeniem, który przejdzie przez Two∆t test rozszerzenia, a teoretycznie powinien zadziałać jako shell
Go to the top of the page
+Quote Post
d.stp
post
Post #3





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

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


Nie zadziała taka opcja, bo ja nie sprawdzam po nazwie pliku rozszerzenia a sprawdzam mime czy jak to tam się zwało tego pliku
Go to the top of the page
+Quote Post
untorched
post
Post #4





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

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


A przypadkiem MIME nie jest zależne od rozszerzenia? Żeby sprawdzić czy plik jest poprawnym obrazkiem możesz go przemielić używając np. GD albo getimagesize
Go to the top of the page
+Quote Post
d.stp
post
Post #5





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

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


Dobra czyli upload publiczny (dostępny przez http) przemiele funkcją getimagesize + sprawdzę rozszerzenie pliku i mi to starczy? O zabezpieczenia ponad public_html muszę się martwić?

Fajnie by było jakby jeszcze ktoś doświadczony w tym temacie się wypowiedział.
Go to the top of the page
+Quote Post
viking
post
Post #6





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

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


Mime nie jest zależne od rozszerzenia i na pewno nie ma sensu sprawdzać rozszerzenia. Możesz jeszcze wywalić wszystkie metadane z obrazka, czasami zawierają złośliwy kod który w pewnych sytuacjach może być wykonany.
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: 24.08.2025 - 15:26