Resim yükleme de sunucu güvenliği nasıl sağlarım?
5
●152
- 11-01-2024, 15:48:12Bir web projemde belirli alanlarda kullanıcı tarafından logo, özgeçmiş (pdf) ve resim dosyaları alıp bunları sunucuya kaydedip dosya yollarını veritabanına kaydediyorum. Buraya kadar herhangi bir sorunum yok fakat shell tarzında dosya tabanlı saldırılardan korunmak için nasıl bir yol izleyebilirim? Herkese açık bir web uygulaması olduğundan artniyetli saldırılar alacağımı düşünüyorum. Bu dosyaları farklı bir sunucuya upload edip kullanım sağlamak geliyor aklıma. Bu konuda tecrübesi olan arkadaşların tavsiyelerine ihtiyacım var.
- 11-01-2024, 15:54:51Dosya içeriği ve mimetype taranmalı, upload edilen klasörde script çalışmamalı
- 11-01-2024, 15:57:44Hocam 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ı?yalinyalniz adlı üyeden alıntı: mesajı görüntüle
- 11-01-2024, 16:03:34Dahi yok değil, kontrolden kaçarsa biri tetikleyememeliUfukYILDIZ adlı üyeden alıntı: mesajı görüntüle
- 11-01-2024, 16:07:40php upload ederken uzantı kontrolü yapip ek olarak sunucuya yuklenmeden once dosya icerigi kontrol edilir php kodu icerisinde mevcutsa yükleme iptal edilir.UfukYILDIZ bunu beğendi.1 kişi bunu beğendi.
- 12-01-2024, 01:15:40- Dosya uzantısı değil doğrudan mime kontrolü yapın.UfukYILDIZ adlı üyeden alıntı: mesajı görüntüle
- 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;