Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Sprawdzanie czy obrazek jest obrazkiem czy "niespodzianka"
kiler129
post 11.05.2008, 22:24:41
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Mam dosc spory problem ze skryptem.
User uploaduje obrazek, skrypt sprawdza czy obrazek ma:

- Dozwolone rozszezenie
- Dozwolony mime
- Nie przekracza 2MB
- Czy funckaj getimagesize() zwroci prawidlowy wynik

Wszytko jest ok ale dodajac do pliku php na poczatku pierwsze kilka KB z obrazka i nadajc rozszeznie .jpg mozna upnac kod php co mi sie bardzo nie podoba dry.gif
Jak przed tym zabezpiecza sie imageshack ktory nie daje sie nabrac ?


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Landon
post 11.05.2008, 22:28:37
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 3
Dołączył: 21.04.2007
Skąd: Sosnowiec

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


Sposobem będzie na pewno GD lecz dobre tylko gdy będzie mało razy wykonywane smile.gif (przepisanie piksel po pixelu) tongue.gif


--------------------
Go to the top of the page
+Quote Post
kiler129
post 11.05.2008, 23:04:06
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(Landon @ 11.05.2008, 23:28:37 ) *
Sposobem będzie na pewno GD lecz dobre tylko gdy będzie mało razy wykonywane smile.gif (przepisanie piksel po pixelu) tongue.gif


Przy kilku obrazkach to i owszem ale nie przy setkach sadsmiley02.gif

edit:

Czesciowo chyba obszedlem problem.
Teraz da sie wgrac taki obrazek ale kod sie nie wykonuje. Dalem w .htaccess:

Kod
AddType text/plain .php .php3 .php4 .php5 .inc .phtml .cgi .pl
RemoveHandler .php


Chcialem wylaczyc php engine w katalogu obrazkow ale niestety wywala mi HTTP500 ;/

Ten post edytował kiler129 11.05.2008, 23:07:21


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Pilsener
post 12.05.2008, 12:10:47
Post #4





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

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


Sposób stary jak świat: wczytaj kilka początkowych i ostatnich bajtów pliku i zobacz, co zawiera. Są też pewnie gotowe rozwiązania (w ramach PEAR, GD etc.)
Go to the top of the page
+Quote Post
mike
post 12.05.2008, 12:14:43
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


W zupełności wystarczy getimagesize()
Go to the top of the page
+Quote Post
kiler129
post 12.05.2008, 23:32:18
Post #6





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(Pilsener @ 12.05.2008, 13:10:47 ) *
Sposób stary jak świat: wczytaj kilka początkowych i ostatnich bajtów pliku i zobacz, co zawiera. Są też pewnie gotowe rozwiązania (w ramach PEAR, GD etc.)


Poczatkowe mozna dac podmienione a koncowe jak niby walidowac?


Cytat(mike @ 12.05.2008, 13:14:43 ) *
W zupełności wystarczy getimagesize()


Ja bla bla bla a ty swoje sciana.gif
Getumagesize wywala mi jakis kosmiczny rozmiar w stylu 535623742345x6745555553235 ale zwraca true i wszytko diabli biora dry.gif


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Shili
post 13.05.2008, 10:02:18
Post #7





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


To sprawdzaj nie true albo false, tylko czy rozmiar jest kosmiczny albo nie. Wiadomo, że zwykły user nie wepchnie obrazka o rozdzielczości większej niż jakaś tam, skoro te z dodatkowym kodem mają dziki rozmiar wystarczy zrobić jeden warunek i voila.
Go to the top of the page
+Quote Post
Cezar708
post 13.05.2008, 10:37:12
Post #8





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


aby obronić się przed wsztrzykniętym kodem PHP (i nie tylko) po prostu pobierz obrazek i poprzez GD przekonwertuj go na jakiś format graficzny (nawet taki sam jakim sam jest) to spowoduje usunięcie wszelkich dodatkowych kodów, które nie są danymi obrazka.

Pozdrawiam
Go to the top of the page
+Quote Post
kiler129
post 13.05.2008, 14:45:40
Post #9





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(Cezar708 @ 13.05.2008, 11:37:12 ) *
aby obronić się przed wsztrzykniętym kodem PHP (i nie tylko) po prostu pobierz obrazek i poprzez GD przekonwertuj go na jakiś format graficzny (nawet taki sam jakim sam jest) to spowoduje usunięcie wszelkich dodatkowych kodów, które nie są danymi obrazka.

Pozdrawiam


To jest genialne! Dziekuje smile.gif


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Babcia@Stefa
post 13.05.2008, 17:17:22
Post #10





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


Możesz też sprawdzać klasą:
http://manual.babciastefa.boo.pl/download/...ment.class.phps - Sama klasa
http://manual.babciastefa.boo.pl/download/db.eme - Baza danych klasy
http://manual.babciastefa.boo.pl/download/E.M.E.test.phps - Przykład

Dziękuję, Babcia@Stefa


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
mrok
post 13.05.2008, 17:52:29
Post #11





Grupa: Zarejestrowani
Postów: 258
Pomógł: 17
Dołączył: 22.05.2007

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


a czy nie wystarczy ustawic praw do takiego pliku na 640 questionmark.gif


--------------------
Go to the top of the page
+Quote Post
webdice
post 13.05.2008, 17:57:48
Post #12


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(mrok @ 13.05.2008, 18:52:29 ) *
a czy nie wystarczy ustawic praw do takiego pliku na 640 questionmark.gif


Logicznie rzecz biorąc, jeśli kod zawarty w obrazu będzie "blokowany" przez chmod, to obrazek również.
Go to the top of the page
+Quote Post
mrok
post 13.05.2008, 20:50:10
Post #13





Grupa: Zarejestrowani
Postów: 258
Pomógł: 17
Dołączył: 22.05.2007

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


Cytat(webdicepl @ 13.05.2008, 18:57:48 ) *
Logicznie rzecz biorąc, jeśli kod zawarty w obrazu będzie "blokowany" przez chmod, to obrazek również.

ale ja blokuję tylko "do wykonania" natomiast czytac może każdy..
i pytanie z mojej strony jest jak najbardziej powazne (choc moze glupie)


--------------------
Go to the top of the page
+Quote Post
b_chmura
post 13.05.2008, 23:33:29
Post #14





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


Cytat
Wszytko jest ok ale dodajac do pliku php na poczatku pierwsze kilka KB z obrazka i nadajc rozszeznie .jpg mozna upnac kod php co mi sie bardzo nie podoba


Domyślnie kod php w plikach z rozszerzeniem .jpg nie jest wykonywany.
Z jakimkolwiek rozszerzeniem oprócz .php .php3 .php4 .php5, także nie wiem w czym problem.

Ten post edytował b_chmura 13.05.2008, 23:35:25
Go to the top of the page
+Quote Post
kiler129
post 14.05.2008, 08:15:09
Post #15





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(b_chmura @ 14.05.2008, 00:33:29 ) *
Domyślnie kod php w plikach z rozszerzeniem .jpg nie jest wykonywany.
Z jakimkolwiek rozszerzeniem oprócz .php .php3 .php4 .php5, także nie wiem w czym problem.


Tak tylko apache chyba po mime patrzy i jakims dzinym trafem uznaje to za plik PHP.
Jak to dziala glebiej nie mam pojecia, najprosciej wylaczyc php w katalogu obrazkow ale niestety nie moge.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
b_chmura
post 14.05.2008, 09:43:24
Post #16





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


Cytat
Tak tylko apache chyba po mime patrzy i jakims dzinym trafem uznaje to za plik PHP.


W takim wypadku przy uploadzie wystarczy najprostsze zabezpieczenie

  1. <?php
  2. if($_FILES[plik][type] == 'type/jpg')
  3. echo 'plik ok';
  4. else
  5. echo 'plik nie ok';
  6. ?>
Go to the top of the page
+Quote Post
kiler129
post 14.05.2008, 10:59:13
Post #17





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Tak oczywiscie, sprawdzam MIME ale nie wiedziec dlaczego apache przy odowlywnaiu sie do pliku probuje byc madrejszy i wykonuje kod. Jak mowie nie wiem dlaczego ale pomoglo dodanie "RemoveHandler .php"
Mam dostep na serwerze do php.ini - czy jest mozliwsoc pokombinowania w nim i wylaczenia dla konkretnego katalogu engine php ?


--------------------
flexiCMS v2 [|||||||+--] 75% done
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 Wersja Lo-Fi Aktualny czas: 28.06.2025 - 15:10