Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy można zaufać funkcjom z biblioteki gd2?
Forum PHP.pl > Forum > PHP
stefan33
Witam
Mam napisany skrypt js+ajax w którym można do obrazka dodać np. tekst. Dane typu rozmiar, kolor czcionki itd. wysylam ajaxem poprzez post.
Używam np. takiej funkcji:
  1. imagettftext($obrazek, $_POST['font_size'], 0, $_POST['x'], $_POST['y'], $_POST['color'], "{$_SERVER['DOCUMENT_ROOT']}/arial.ttf", $_POST['text']);

error_reporting jest ustawione na 0. I pytanie czy powinienem filtrować te dane czy w ten sposób potencjonalny haker nie ma mozliwosci wyrzadzic zadnych szkod? Teoretycznie jeżeli coś będzie nie tak to np. w tym wypadku tekst nie doda się do obrazka wiec nic sie nie dzieje. Nie chodzi tu o moje lenistwo a jedynie o wydajność, poniewaz jakbym wszystko chcial porzadnie filtrowac to by potem dochodzilo nawet do stu i wiecej dodatkowych if'ów itd. Z góry dziekuje za odpowiedzi
pedro84
Dane wejściowe filtrujemy zawsze.
nospor
Cytat
Nie chodzi tu o moje lenistwo a jedynie o wydajność, poniewaz jakbym wszystko chcial porzadnie filtrowac to by potem dochodzilo nawet do stu i wiecej dodatkowych if'ów itd.

1) Nawet jakbyś miał mieć niby te 100 IFów to i tak mają być
2) No i z tymi 100 IFami to "lekko" przesadziłeś.... Jakie ty chcesz tu mieć IFy do filtracji tych danych do tego kodu?
markonix
Rozmiary wystarczy rzutować na INT, color na pewno musisz i tak weryfikować czy jest faktycznie poprawnym kolorem i potem text wypadałoby ograniczyć jakoś ale nie sądzę, żeby użycie jakichś specjalnych znaków mogło prowadzić do włamania czy coś. GD to nie baza danych.
stefan33
Cytat(nospor @ 2.10.2012, 17:47:10 ) *
2) No i z tymi 100 IFami to "lekko" przesadziłeś.... Jakie ty chcesz tu mieć IFy do filtracji tych danych do tego kodu?

Tekstów może być wiele naraz, a w jednej pętli m.in:
  1. if(in_array($_POST['font_size'],$czcionki))
  2. if(in_array($_POST['color'],$kolory))
  3. if(is_numeric($_POST['x']) && is_numeric($_POST['y']) && ..)
  4. if($_POST['x'] < $obrazekDlugosc && ..)

Praktycznie rzecz biorąc chodziło mi o testy a nie if'y bo if moze byc nawet i jeden zbity z 10 więc to pojęcie względne

Cytat(markonix @ 2.10.2012, 17:49:30 ) *
Rozmiary wystarczy rzutować na INT, color na pewno musisz i tak weryfikować czy jest faktycznie poprawnym kolorem i potem text wypadałoby ograniczyć jakoś ale nie sądzę, żeby użycie jakichś specjalnych znaków mogło prowadzić do włamania czy coś. GD to nie baza danych.

Właśnie o to mi chodzi.. No i rzutowanie rozmiarów na int też nie wystarczy bo mogą być niepasujące do wymiarów obrazka.. Teoretycznie jak ktoś się uprze to niech sobie powpisuje bzdury, ale nic lepszego nie osiągnie niz by mógl zrobić w paincie..
markonix
Cytat(stefan33 @ 2.10.2012, 18:59:42 ) *
Właśnie o to mi chodzi.. No i rzutowanie rozmiarów na int też nie wystarczy bo mogą być niepasujące do wymiarów obrazka.. Teoretycznie jak ktoś się uprze to niech sobie powpisuje bzdury, ale nic lepszego nie osiągnie niz by mógl zrobić w paincie..

Jeżeli robisz generator obrazka, z którego będą korzystać różni ludzie to go po prostu zabezpieczasz przed pomyłką korzystającego z niego - informujesz, że podał złe rozmiary, zły kolor (tutaj przyda się colorpicker), natomiast jeżeli tworzysz sam dynamiczne obrazki i wiesz, że tylko specjalnie można je zmodyfikować (np. zmieniając parametry GET) to wybór już należy do Ciebie czy to walidować. Stworzy sobie jakiś kompromitujący obrazek ale nic z nim nie zrobi - przecież nie podmieni obrazków innym tylko sobie. To tak samo jakbym sobie modyfikował FireBugiem dowolną stronę - mogę wstawić zdjęcie kupy ale co z tego skoro wynik jest widoczny tylko dla mnie wink.gif Sam sobie odpowiedziałeś z tym paintem też.
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.