Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bezpieczny upload plików
Forum PHP.pl > Forum > PHP
ave
Zamierzam prowadzić dla użytkowników możliwość uploadu plików na serwer, przy czym zalezy mi aby użytkownicy, niemogli wgrywać plików 'niebezpiecznych' np. skryptów php,i teraz pytanie jak najlepiej to zorganizowac
a) zrobić rozszerzeń dozwolonych jpg, bmp, mp3 itp...
b) wpis w .htaccessie ze jak plik ma inne rozszerzenie niz w/w to traktuje je jako text jest to mozliwe?
c) a+b;

Wydaje mi sie ze sam punkt a) wystarczy, jak sądzicie ?
moze jakie inne pomysły?
brachu
punkt a) powinien wystarczyc moim skromnym zdaniem winksmiley.jpg

pozdro
dawijanii
Moim zdaniem najlepiej nadaje się sandbox czyli uploand do katalogu z poza witryny albo z taką regułką.

.htaccess

/~pliki/ Miejsce składowania pliku

Cytat
php_admin_flag engine Off

<Files ~ "^.*\.(gif|jpg|bmp|jpeg|jpeg)$">
    Order deny, allow
    Deny from all
</Files>


Dodatkowo odwołanie do katalogu poprzez skrypt z wyrażeniem regularnym który filtruje nazwy ^[A-Za-z0-9]\.(gif|jpg|bmp|jpeg|jpeg)$ to samo przy uploadzie pliku pozwoli w miare poczuć sie bezpiecznie na jakiś czas. Odwołanie do katalogu z danymi najlepiej zrobić poprzez mod_rewrite

[b]/sciagnij/[A-Za-z0-9]\.(gif|jpg|bmp|jpeg|jpeg)[b] sciezka do uploadu plików

Cytat
Rewriterule ([A-Za-z0-9]\.(gif|jpg|bmp|jpeg|jpeg)) sciegnij.php5?s=$1


is_uploaded_file

Dużo niedoróbek ale chyba sobie poradzisz winksmiley.jpg
juke
jeszcze dodaj mime-type winksmiley.jpg
ave
juke tak tak mime-type swoja droga
zainteresowalem sie mime_content_type ale jak sie okazalo niemam tego wkompilowanego w phpa wiec doinstalowalem to, lecz niedziaja tak jak powinno, mime type pokazuje tylko gdy jest text/plain, przy innych nic nie wyswietla sprawdzalem magic.mime i tam wszystko ok. Moze to wina tego ze php niezostal z tym skompilowany??

dawijanii
zbyteczne wydaje mi sie sprawdzanie typu pliku poprzez skrypt podczas kazdego jego wywołania jesli zrobie to juz na samym wstepie przy jego uploadzie i przyjme tylko te do ktorych bede mial pewnosc ze sa obrazkami lub plikami dzwiekowymi, niezamierzam dawać użytkownikowi możliwości zmiany rozszerzenia pliku, czyli wszystko co user wgra przejdzie przez walidacje

a do walidacji chce uzyć
sprawdzania mime_type z tablicy $_FILES['nazwa']['type'] przy wgrywniu, i na wszelki wypadek w .htaccessie definicje ze php,php5.asp itd sa trakowanie jak text/plain.
No i jesli uruchomie to jeszcze mime_content_type.

Wie ktos czy okreslanie $_FILES['nazwa']['type'] jest robione na podstawie magic.mime tak samo jak w przypadku mime_content_type ?

pozdrawiam
ave
aleksander ale tam nic niema, tylko sprawdzanie po rozszerzeniu ktore mi nie wystarczy.

nieudalo mi sie odpalic mine_content_type, jak juz pisalem dziala tylko dla text/plain, i pewnie nie jest to winna tego ze nie jest skapilowane z phpem, bo tak samo instalowalem mcrypt, ktory tez powinnien byc razem z phpem, a dziala dodany pozniej.

Wiec zostaje przy kontroli przy uploadzie, + sztywne przepisywanie rozszerzen, ktos wpisze wirus.exe.gif to ucina wsio po . zostawia wirus i dodaje .gif.

I chcialbym jeszcze dodac linike w .htaccessie ktora spowoduje ze wszystko oprocz bmp|jpg itp zostanie potraktowane jako text/plain. Wie ktos moze jak ?


Pozdrawiam
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.