Benim web sitesi için bir kullanıcı-tabanlı görüntü yükleme aracı uygulayarak ediyorum. Sistem herhangi kullanıcıların sadece JPEG ve PNG dosyalarını yüklemek için izin vermelidir. Ben, tabii, güvenliği hakkında endişeli değilim ve bu yüzden kendime daha birçok akıllı insan gönderimine izin için aşağıdaki kontroller hakkında nasıl hissettiğini merak ediyorum:
1) Önce beyaz liste PHP izin verilen dosya uzantıları sadece PNG, png, jpg, JPG ve JPEG izin vermek. Gibi bir fonksiyonu üzerinden kullanıcının dosyanın uzantısı Al:
return end(explode(".", $filename));
Bu. Png.php gibi zararlı bir şey yüklemekten kullanıcıyı engellemek yardımcı olmalıdır. Bu geçerse, 2. adıma geçin.
2) TMP dosya üzerinde php fonksiyon getimageize () çalıştırın. Via gibi bir şey:
getimagesize($_FILES['userfile']['tmp_name']);
Bu yanlış dönmezse, devam edin.
. 3) Bu dizin içinde herhangi bir dosya PHP dosyalarını ayrıştırmak değil, böylece bir htaccess dosyası yüklenenler dizin içinde yer olduğundan emin olun:
php_admin_value engine Off
4) bir şey önceden belirlenmiş için kullanıcının dosyayı yeniden adlandırın. I.E.
$filename = 'some_pre_determined_unique_value' . $the_file_extension;
Bu da dosya kullanılan herhangi sorgularda yalnızca kullanıcı belirlenen değişken olacak gibi SQL enjeksiyonu önlemek yardımcı olacaktır.
Ben yukarıda gerçekleştirirseniz, nasıl savunmasız saldırı için hala öyleyim? Bir dosyayı kabul etmeden önce umarım 1) sadece izin jpgs ve pngs olmalıdır, 2) PHP geçerli bir resim diyor ki Onaylı, 3) görüntüleri yürütülmesini vardır. Php dosyalarını dizin devre dışı ve 4), kullanıcıların bir şey dosyasını değiştirildi benzersiz.
Teşekkürler,