Mertcan Erdoğan

Dosya yükleme boyutu arttırma ve çalışma süreleri hakkında riskleri anlatacağız. Risklerden başlayalım:

1️⃣ upload_max_filesize 128M (Maksimum Dosya Yükleme Boyutu)

✅ Faydası: Kullanıcıların büyük dosyalar (örneğin yüksek çözünürlüklü videolar veya resimler) yüklemesine olanak tanır.

⚠️ Riskleri:

  1. Disk Alanı Tükenebilir 🛑
    • Kullanıcılar çok büyük dosyalar yüklerse, sunucunun depolama alanı hızla dolabilir.
    • Bu, sunucunun çökmesine veya yavaşlamasına neden olabilir.
  2. DDoS ve Kötüye Kullanım Tehlikesi 🔥
    • Kötü niyetli kullanıcılar, çok büyük dosyalar yükleyerek sunucunun diskini doldurabilir ve hizmet kesintisine neden olabilir.
    • Özellikle kamuya açık bir dosya yükleme sistemi kullanıyorsan, bu büyük bir güvenlik açığı olabilir.

🎯 Çözüm:

  • Kullanıcıların dosya boyutu sınırlarını mantıklı belirle (Örneğin, 50MB yerine 128MB gerçekten gerekli mi?)
  • Dosya türü kısıtlamaları uygula (Sadece .jpg, .png, .mp4 gibi güvenli formatları kabul et).
  • Yüklenen dosyaları periyodik olarak temizleyen bir cron job yaz.

2️⃣ post_max_size 128M (Maksimum POST Verisi Boyutu)

✅ Faydası: Büyük dosya yüklemeleri veya formlar için gereklidir.

⚠️ Riskleri:

  1. Hafıza Tüketimi 🛑
    • Sunucu, büyük POST isteklerini işlemek için çok fazla RAM kullanabilir.
    • Eğer birden fazla kullanıcı aynı anda büyük dosyalar yüklüyorsa, sunucu yanıt vermeyi durdurabilir.
  2. Sistem Çökmesi 💥
    • Kullanıcı büyük bir POST isteği başlatıp yarıda bırakırsa, sunucu RAM’i gereksiz yere tahsis edebilir.
    • Bu da işlem kuyruğunun dolmasına ve sitenin çökmesine neden olabilir.

🎯 Çözüm:

  • Gerçekten büyük POST verisine ihtiyacın var mı? Belki daha küçük parçalar halinde yükleme yapılabilir.
  • Dosya yüklemelerinde chunking (parça parça yükleme) kullanabilirsin (örneğin AJAX ile).
  • POST yerine streaming tabanlı yükleme çözümleri araştırılabilir.

3️⃣ max_execution_time 300 (PHP Betiğinin Maksimum Çalışma Süresi – 5 Dakika)

✅ Faydası: Uzun süren işlemleri (büyük dosya işleme, yedekleme, video işleme) tamamlamaya izin verir.

⚠️ Riskleri:

  1. Sunucu Kaynaklarını Engelleyebilir 🔥
    • Eğer bir PHP betiği 5 dakika boyunca çalışıyorsa, diğer işlemleri bloke edebilir.
    • Bu, sunucunun diğer istekleri işlemesini geciktirebilir.
  2. Sonsuz Döngü ve Sunucu Çökmesi 🛑
    • Eğer betik bir hata nedeniyle sonsuz döngüye girerse, 5 dakika boyunca boşuna işlem yapar ve sunucuyu yorar.
    • Bu durum, yüksek CPU kullanımı ve sunucu çökmesi gibi sorunlara yol açabilir.

🎯 Çözüm:

  • Gerçekten uzun süren işlemler için asenkron işlem kullan (background job).
  • Kodun içinde zaman hesaplamaları yaparak işlem süresini kontrol et (set_time_limit(60) gibi).
  • Sonsuz döngüleri ve uzun süren SQL sorgularını optimize et.

4️⃣ max_input_time 300 (PHP’nin Giriş Verisini Okuma Süresi – 5 Dakika)

✅ Faydası: Büyük veri işleyen API’ler veya uzun süren dosya yüklemeleri için gereklidir.

⚠️ Riskleri:

  1. Sunucu Kaynaklarını Gereksiz Yere Kullanabilir 🔥
    • Kullanıcı bir yükleme başlatır ve ağ bağlantısını keserse, PHP 5 dakika boyunca boşuna veri bekler.
    • Bu, bağlantı kaynaklarının gereksiz yere harcanmasına neden olur.
  2. Güvenlik Açığı Oluşturabilir 🛑
    • Kötü niyetli bir saldırgan, sunucuya devasa POST istekleri göndererek sunucu kaynaklarını tüketebilir.
    • Yüksek max_input_time değeri, brute force saldırılarına karşı zayıflık yaratabilir.

🎯 Çözüm:

  • Gerçekten 5 dakika boyunca giriş verisini okumaya ihtiyacın var mı?
  • Daha kısa bir süre belirle (örneğin 60 saniye) ve işlemleri optimize et.
  • İstemcinin bağlantısını kontrol eden mekanizmalar ekle (örneğin WebSocket veya AJAX polling).

Sonuç ve Öneriler

  • Mümkün olduğunca düşük değerler kullanmaya çalış.
  • Dosya yükleme sınırını kullanıcı ihtiyacına göre ayarla (örneğin 128MB yerine 50MB düşünebilirsin).
  • Asenkron ve parçalı yükleme yöntemlerini araştır (örneğin AJAX + chunking).
  • Sunucunun aşırı yüklenmemesi için max_execution_time ve max_input_time değerlerini makul seviyede tut.

Bunları dikkate almazsan sunucun DDoS saldırılarına açık hale gelebilir, disk dolabilir, RAM ve CPU tüketimi artabilir, hatta sitende kesintiler yaşanabilir. 🚨

Wordrpess Dosya Yükleme Boyutu Arttırma işlemi

1️⃣ php_value upload_max_filesize 128M

✔ Anlamı:

Bu ayar, PHP üzerinden yüklenebilecek maksimum dosya boyutunu belirler.

✔ 128M ne demek?

128 Megabayt (MB) sınırı konulmuş. Yani kullanıcı, en fazla 128MB boyutunda bir dosya yükleyebilir.

✔ Örnek Kullanım:

Eğer bir kullanıcı 200MB’lık bir video yüklemeye çalışırsa, yükleme başarısız olur çünkü upload_max_filesize sınırı 128MB olarak belirlenmiştir.


2️⃣ php_value post_max_size 128M

✔ Anlamı:

Bir form gönderilirken (POST yöntemiyle) gönderilebilecek maksimum veri boyutunu belirler.

✔ 128M ne demek?

Form üzerinden gönderilecek toplam veri miktarı en fazla 128MB olabilir.

✔ Neden Önemli?

Dosya yükleme formları da POST yöntemiyle çalıştığından, post_max_size değeri upload_max_filesize değerinden büyük veya eşit olmalıdır. Aksi halde büyük dosya yükleme işlemleri başarısız olur.


3️⃣ php_value max_execution_time 300

✔ Anlamı:

Bir PHP dosyasının maksimum çalışabileceği süreyi (saniye cinsinden) belirler.

✔ 300 ne demek?

PHP betiği 300 saniye (5 dakika) boyunca çalışabilir. Eğer bir işlem 5 dakikayı aşarsa, PHP otomatik olarak işlemi durdurur ve “Maximum execution time exceeded” (Maksimum yürütme süresi aşıldı) hatası verir.

✔ Neden Gerekli?

  • Büyük dosyalar yüklenirken uzun sürebilir.
  • Büyük veritabanı sorguları zaman alabilir.
  • Büyük resim/video dosyaları işlenirken sürenin uzun olması gerekebilir.

4️⃣ php_value max_input_time 300

✔ Anlamı:

PHP’nin gelen veriyi işlemek için harcayabileceği maksimum süreyi (saniye cinsinden) belirler.

✔ 300 ne demek?

PHP, formdan veya dosya yükleme işleminden gelen verileri 300 saniye (5 dakika) boyunca okuyabilir ve işleyebilir.

✔ Farkı Ne?

  • max_execution_time: Kodun tüm çalışma süresi
  • max_input_time: Yalnızca giriş verisinin okunma süresi

Eğer bir kullanıcı büyük bir dosya yüklüyorsa ve sunucu veriyi okumak için çok zaman harcıyorsa, bu değer artırılabilir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir