Stworzyłem (używając a script i trochę pomocy ze Sterty i trochę pomocy od znajomych, wiem bardzo niewiele na temat PHP) prostą stronę dla lokalnej publikacji non-profit, gdzie ludzie mogą przesyłać zdjęcia.Jak mogę zabezpieczyć skrypt do przesyłania obrazów PHP przed exploitami?
nie jestem wielki z bezpieczeństwem (od podstawy ignorancji, a nie celowe zaniedbanie), ale już podjęte następujące kroki, aby chronić tę stronę:
• skryptu PHP jest ustawiony tylko zaakceptować .jpg , .png i .tif pliki do przesłania;
• podfolder, w którym zapisuje treść formularza, ma uprawnienia ustawione na 700, a podfolder, który zapisuje przesłane zdjęcia, ma uprawnienia ustawione na 700;
• zgodnie z dokumentacją, mój gospodarz ma następującą konfigurację do zapewnienia, że tylko pliki .php uruchomić jako .php:
<FilesMatch \.php$>
SetHandler php52-fcgi
</FilesMatch>
• Mam umieścić plik .htaccess na odpowiednich (główny i zapisane treści) foldery:
RemoveHandler .php
RemoveHandler .inc
RemoveHandler .pl
RemoveHandler .cgi
RemoveHandler .py
RemoveHandler .fcgi
Overnight jednak ktoś znalazł tę stronę testową i złożone, co wydaje się być idealnie łagodny wiadomość testowa i mały .jpg. Jest to prywatna strona testowa z nieintuicyjnym adresem URL, o którym wie tylko ja i około trzech innych osób; żaden z pozostałych nie wysłał tego testu.
To oczywiście mnie martwi, że jest coś dziwnego, i obawiam się, że nie wiem wystarczająco dużo o bezpieczeństwie, aby upewnić się, że ta strona jest bezpieczna.
Czy jest coś oczywistego, czego mi brakuje?
nazwa pliku podana przez użytkownika (w '$ _FILES ['upload'] ['name']') nie jest godna zaufania i można ją łatwo zmienić. Nie sprawdzaj tych rozszerzeń. Sprawdź typ mime, jeśli zaznacz, czy 'getimagesize()' zwraca poprawny wynik. Jeśli to możliwe, wygeneruj własną nazwę pliku. – MarcDefiant