Hocam her alanda mimetype kontrolü ve hatta dosya boyutu kontrolü yapıyorum. İlgili dosyaların yüklendiği dizinde hiçbir php dosyası dahi yok scriptten kastınız bu ise eğer. Onun haricinde yapmam gereken herhangi bir önlem var mı?
- Dosya uzantısı değil doğrudan mime kontrolü yapın.
- Ardından mime ve uzantı uyuyor mu onu kontrol edin.
- Dosyayı yüklerken tarayıcıdan erişilebilen bir path'e kaydetmeyin. web root folder'ın bir üst dizinine kaydedebilirsiniz.
- Dosyayı dizine kaydederken ismini değiştirin, uzantıyı ise silin ya da değiştirin. Orijinal dosya adı, uzantısı, boyutu, mimetype gibi bilgileri doğrudan veritabanında tutabilirsiniz.
- Dosyaları kullanıcıya sunarken doğrudan path ile değil ufak bir php kodu ile sunun. Örneğin:
$file = file_get_contents('/up/to/httpdocs/' . $file_name . '.' . $file_extension);
header('Content-Type: ' . $file_mime);
header('Content-Length: '. $file_size);
header('X-Content-Type-Options: nosniff');
echo $file;