Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Upload a zabezpieczenia
Forum PHP.pl > Forum > Przedszkole
d.stp
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
patry6123
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
d.stp
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
untorched
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
d.stp
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ł.
viking
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.