• 11-01-2024, 15:48:12
    #1
    Bir 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:51
    #2
    Dosya içeriği ve mimetype taranmalı, upload edilen klasörde script çalışmamalı
  • 11-01-2024, 15:57:44
    #3
    yalinyalniz adlı üyeden alıntı: mesajı görüntüle
    Dosya içeriği ve mimetype taranmalı, upload edilen klasörde script çalışmamalı
    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ı?
  • 11-01-2024, 16:03:34
    #4
    UfukYILDIZ adlı üyeden alıntı: mesajı görüntüle
    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ı?
    Dahi yok değil, kontrolden kaçarsa biri tetikleyememeli
  • 11-01-2024, 16:07:40
    #5
    php upload ederken uzantı kontrolü yapip ek olarak sunucuya yuklenmeden once dosya icerigi kontrol edilir php kodu icerisinde mevcutsa yükleme iptal edilir.
    • UfukYILDIZ
    UfukYILDIZ bunu beğendi.
    1 kişi bunu beğendi.
  • 12-01-2024, 01:15:40
    #6
    UfukYILDIZ adlı üyeden alıntı: mesajı görüntüle
    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;