Walidacja(?) przesyłanie obrazka na serwer w Spring MVC

0

W mojej aplikacji na istnieje możliwość dodania sobie avatara do profilu. Czyli podczas tworzenia profilu w formularzu mamy opcję dodania pliku. No właśnie. Trzeba wykluczyć, że ktoś prześle pdf itp. Teraz pytanie.

Gdzie mam sprawdzać, czy klient przesłał obrazek? W kontrolerze?

Myślałem o czymś takim:

MultipartFile customerImage = user.getImage();
if (customerImage!=null && !customerImage.isEmpty() && customerImage.getContentType()=="image/jpeg") {
...
}

No dobra, ale przecież obrazek nie musi być koniecznie w jpeg i innych formacie i chyba głupie będzie ręczne pisania sprawdzanie czy jest to image/png, image/gif itp.

Jakieś pomysły :)>?

1

Szczególnie że ten twój check niczego nie sprawdza. Bo w headerze http to sobie można ustawić co chcesz ręcznie. Co więcej pamiętaj że nawet poprawny obrazek png może zawierać coś niebezpiecznego, patrz np. https://github.com/p4-team/ctf/tree/master/2016-04-15-plaid-ctf/web_pixelshop#pl-version

Więc w praktyce musiałbyś wczytać sobie ten obrazek za pomocą jakiejś biblioteki a następnie zapisać. Jak sie wysypie to znaczy że dostałeś coś co nie było obrazkiem, a przy zapisie jest szansa ze usuniesz potencjalne backdoory (ale niekoniecznie, patrz pixelshop, tamten png jest zupełnie poprawny!)

0
Shalom napisał(a):

..
Więc w praktyce musiałbyś wczytać sobie ten obrazek za pomocą jakiejś biblioteki a następnie zapisać. Jak sie wysypie to znaczy że dostałeś ..

Jaką bibliotekę polecasz?

1 użytkowników online, w tym zalogowanych: 0, gości: 1