Opracowuję skrypt php, który zastąpi bieżący, który będzie miał dużo ekspozycji na różne rynki/kraje. Ten skrypt między innymi oferuje funkcję przesyłania zdjęć.Podejście bezpieczeństwa przesyłania obrazu w języku angielskim
Po wielu lekturach na ten temat, zastosowałem się do opisanej poniżej metody. Gorąco będę wdzięczny za uwagi na temat bezpieczeństwa.
- Zdjęcie jest przesyłane do prywatnego folderu 777 poza katalogiem głównym.
- Wykonywane jest sprawdzenie, czy na liście znajdują się białe rozszerzenia (dozwolone tylko pliki jpg, gify, png), wszystko inne jest usuwane.
- Stosowanie getimagesize do sprawdzania wymiarów min-max i ważności fotografii.
- Sprawdź dopasowanie typu MIME i rozszerzenia pliku.
- Zmiana rozmiaru przesłanego zdjęcia na wymiary standardowe (za pomocą imagecopyresampled).
- Zapisywanie utworzonych plików jako jpg.
- Usunięcie oryginalnego pliku.
- Zapisuj zdjęcia za pomocą nowej (nie losowej nazwy) np. Img51244.jpg.
- Przenieś nowe zdjęcia do zmiennych podkatalogów folderu publicznego (uprawnienia 777) zgodnie z nie przewidywalnym algorytmem. Tj.
img10000.jpg
będzie przechowywany pod adresemphotos/a/f/0/img10000.jpg
, aimg10001.jpg
będzie przechowywany pod adresemphotos/0/9/3/img10001.jpg
. Odbywa się to z innych powodów (wykorzystanie subdomen do przesyłania statycznych treści lub korzystanie z CDN).
Skrypt zostanie uruchomiony na dedykowanym serwerze linuksowym.
nic tutaj nie wyskakuje. oprócz uprawnienia 777 do folderu - jak rozumiem, jeśli ma 777 uprawnień, nie jest prywatny. ale o ile mogę powiedzieć, że to naprawdę miałoby znaczenie, gdyby twój serwer był zagrożony (co nie wygląda na to, żebym mógł to zrobić w tym samym skrypcie) – jammypeach
777 nie brzmi bezpiecznie. Możliwe powiązane z http://stackoverflow.com/questions/3644138/secure-user-image-upload-capabilities-in-php – ajreal
Brzmi bardzo dobrze dla mnie, może z wyjątkiem bardzo liberalnych uprawnień. Może mogą być nieco ograniczone? W przeciwnym razie robi to wszystko, co jest mi potrzebne, w tym usunięcie danych EXIF. –