Dosya Yükleme Güvenliği Neden Önemli?
Kötü yazılmış dosya yükleme kodu, saldırganların sunucuya zararlı PHP dosyası yüklemesine ve çalıştırmasına izin verebilir. Bu, sunucunun tamamen ele geçirilmesine yol açabilir.
Güvenli Upload Kodu
$izinliMime = ["image/jpeg","image/png","image/webp","application/pdf"];
$maxBoyut = 2 * 1024 * 1024; // 2MB
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES["dosya"]["tmp_name"]);
if (!in_array($mimeType, $izinliMime, true)) {
die("Geçersiz dosya türü");
}
if ($_FILES["dosya"]["size"] > $maxBoyut) {
die("Dosya çok büyük");
}
$uzanti = pathinfo($_FILES["dosya"]["name"], PATHINFO_EXTENSION);
$yeniIsim = bin2hex(random_bytes(16)) . "." . strtolower($uzanti);
move_uploaded_file($_FILES["dosya"]["tmp_name"], "uploads/" . $yeniIsim);Kritik Güvenlik Kuralları
- Asla orijinal dosya adını kullanmayın
- Upload klasörünü web dışında tutun
- PHP uzantılı dosyaları kesinlikle reddedin
- .htaccess ile upload klasöründe PHP çalışmasını engelleyin