|
Jak zrobić upload pliku graficznego bezpośrednio do biblioteki GD Image w PHP ? |
Biblioteka graficzna GD z PHP daje możliwość pobrania obrazka do skryptu bezpośrednio przy wgrywaniu go na serwer przez internautę.
Co nam to daje? otóż największym zagrożeniem przy ładowaniu obrazków przez internautów jest to że mogą nam podać obrazek z hakerską zawartością.
W obrazku zwłaszcza w plikach gif czy jpg można bardzo łatwo zamieścić skrypt php lub w innym języku np. w perlu.
Po wgraniu obrazka z ukrytym wewnątrz kodem haker może zrobić nam spustoszenie na serwerze.
Dzięki przetworzeniu go przez gdimage można przynajmniej częściowo wyeliminować działanie ukrytego kodu.
Po pierwsze obrazek możemy zmniejszyć do odpowiedniego rozmiaru.
Po drugie, możemy go zapisać zawsze w formacie, który nie przechowuje komentarzy - zamiast w gif zapisać w jpg bez komentarza lub np. plik jpg zapisać jako png.
Po trzecie możemy dodać odrazu znak wodny naszego portalu (mniej ważne ale przydatne).
Oto przykład kodu:
jak widać wystarczy jedna linia aby wczytać dane obrazka bezpośrednio do instrukcji imagecreatefromjpeg prosto z tablicy $_FILES jeszcze przed zapisem uploadowanego obrazka na serwerze...wykorzystujemy nazwę tymczasową ...
Zanim obrazek zapiszemy możemy przepuścić cały kod binarny obrazka przez odpowiednie funkcje filtrujące.. np. strip_tags lub np. wyrażenia regularne.
Jeśli nie wierzysz, że w pliku mozna łatwo zapisywać kody ściągnij ten
obrazek i obejrzyj jego kod w notatniku binarnym...
zobaczysz kod tabeli utworzony przez program graficzny apple i ukryty w tym pliku graficznym.
Obrazek pozatym da się otworzyc kazdym programem graficznym. Ukrycie w nim innego kodu np. php czy perla nie jest żadną trudnością.