İlan
05 Haz 2026 13 çevrimiçi üye Duyurular
Ana Sayfa Web Geliştirme
Ana Sayfa Forum Web Geliştirme PHP 8 ile Güvenli Kodlama: Hedefte Kalan 10 Tehlik...
İlan Yan banner placeholder

PHP 8 ile Güvenli Kodlama: Hedefte Kalan 10 Tehlikeli Zayıflık!

eminuruk 20.04.2026 09:22 442 görüntüleme 4 cevap
Son Mesaj
eminuruk
Üye
Üye
Katılım31 Oca 2026
Konular10
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
20.04.2026 09:22 #1

PHP 8 ile kodlama güvenli hale getirmeye yönelik en tehlikeli 10 saldırı ve bunun engellenmesinde etkili savunma yöntemlerini incelediğimiz bir makalede sizleri bekliyor.


PHP 8 ile uygulamalar geliştirmek harika gibi görünse de güvenlik her zaman en önemli önceliğimiz olmalı, çünkü kod yazmak, sık karşılaşılan saldırı yöntemlerini bilmeden inşa edilen bir kaleden daha fazla benzer.

Gelin, en yaygın 10 güvenlik açığından haberdar olarak PHP 8 ile kalkan oluşturabiliriz, çünkü bu açıklar çoğu MMOZirve sitesinde karşılaşılabiliyor ve bu güvenlik açıkları PHP 8 ile karşılamak için oldukça önemli.

1. SQL Injection (SQLi)​

Bir saldırganın, kodunuzun giriş noktalarına, normal verileri değil de manipüle edilebilen SQL komutlarını yerleştirmesi, kötü niyetli bir saldırı yöntemidir, bu tür bir saldırıya "SQL injection" denir.

Savunma: ASLA ama ASLA kullanıcıdan gelen veriyi doğrudan SQL sorgusuna eklemeyin. Her zaman PDO ve parametreli sorgular (prepared statements) kullanın.

php:
// Kullanıcıdan gelen veri
$userInput = $_POST['user_input'];

// Veriyi sorguya :username gibi bir "yer tutucu" ile bağlayın
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $userInput, PDO::PARAM_STR);
$stmt->execute();

PDO kullanarak veriyi sorgudan bağımsız bir şekilde sınıflandırabilir ve saldırılara karşı koruma altına alabilir, böylece saldırganın komut çalıştırma girişimlerini engelleriz.

2. Cross-Site Scripting (XSS)​

Saldırganın, siteniz aracılığıyla diğer kullanıcıların tarayıcısında zararlı JavaScript kodları çalıştırmasıdır. (Örn: Bir yorum alanına <script>... kodu yazması).

Savunma: Kullanıcıdan gelen veriyi ekrana basarken mutlaka htmlspecialchars fonksiyonundan geçirin.

php:
$userInput = $_POST['user_input'];

// Gelen veriyi HTML etiketlerini zararsız metne dönüştürerek temizle
$cleanInput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');

// Ekrana güvenle bas
echo "<p>Güvenli çıktı: $cleanInput</p>";

Bu, <script> etiketinin tarayıcı tarafından çalıştırılmasını engeller, onu metin olarak gösterir.

3. Cross-Site Request Forgery (CSRF)​

Kullanıcıyı kandırarak, onun haberi olmadan (onun oturumuyla) sitenizde istenmeyen işlemler (örn: şifre değiştirme, hesap silme) yaptırma saldırısıdır.

Savunma: Her form işlemi için benzersiz, gizli bir "CSRF token" kullanın.

php:
// Token'ı oluştur ve oturuma kaydet
$token = bin2hex(random_bytes(32)); // Güvenli token üret
$_SESSION['csrf_token'] = $token;

// Formda gizli bir input ile gönder
// <input type="hidden" name="csrf_token" value="<?php echo $token; ?>">

// ---

// Sunucu tarafında kontrol et
if ($_POST['csrf_token'] === $_SESSION['csrf_token']) {
    // Token geçerli, işlem yap
} else {
    // Token geçersiz! Saldırı olabilir.
}

4. Zayıf Kimlik Doğrulama ve Yetkilendirme​

Kullanıcı şifrelerini düz metin saklamak veya "admin" sayfalarını yetkisiz erişime açık bırakmak.

Savunma: Şifreler için mutlaka password_hash() kullanın (önceki konumuzda işlemiştik). Yetkilendirme için Rol Tabanlı Erişim Kontrolü (RBAC) sistemleri kurun ve her sayfada kullanıcının yetkisini (örn: $_SESSION['role'] == 'admin') kontrol edin.

5. Hatalı Hata Yönetimi​

Kullanıcıya "Veritabanı bağlantı hatası: Kullanıcı 'root' şifresi yanlış..." gibi detaylı hata mesajları göstermek. Bu, saldırgana sistem hakkında hayati bilgiler verir.

Savunma: Sunucu (production) ortamında hata gösterimini kapatın. Hataları kullanıcıya göstermek yerine, sunucuda gizli bir dosyaya kaydedin.

php:
// Bu ayarlar production sunucusunda olmalı
ini_set('display_errors', 0);
ini_set('log_errors', 1);

Kullanıcıya sadece "Beklenmedik bir hata oluştu, lütfen daha sonra tekrar deneyin." gibi genel bir mesaj gösterin.

6. Zayıf Oturum Yönetimi​

Tahmin edilebilir oturum kimlikleri kullanmak veya session_regenerate_id() kullanmamak.

Savunma: (Önceki konumuzda detaylıca işledik) Oturum çerezlerini mutlaka Secure ve HttpOnly olarak ayarlayın. Kullanıcı giriş yaptığında session_regenerate_id(true); komutunu çağırarak ona yeni bir oturum kimliği verin.

7. Güvensiz Dosya Yükleme​

Kullanıcının .php veya .exe gibi zararlı dosyalar yüklemesine izin vermek.

Savunma:
  1. Sadece izin verilen dosya türlerine (örn: image/jpeg, image/png) ve boyutlarına izin verin.
  2. Yüklenen dosyaya random_bytes() ile oluşturulmuş benzersiz bir isim verin.
  3. Dosyaları ASLA public_html (web root) içine değil, bir üst dizine kaydedin ve özel bir script ile güvenli bir şekilde sunun.

8. Düzenli Güncellemelerin İhmal Edilmesi​

Eski bir PHP sürümü, eski bir web sunucusu (Apache/Nginx) veya güncellenmemiş composer kütüphaneleri kullanmak.

Savunma: Güvenlik açıkları sürekli keşfedilir. composer update komutunu düzenli çalıştırın, PHP ve sunucu yazılımlarınızı daima en son kararlı (stable) sürüme güncelleyin.

9. Güvenlik Denetimlerinin Eksikliği​

"Kod çalışıyorsa dokunma" mantığı.

Savunma: Kodunuzu düzenli olarak güvenlik denetimlerinden (audit) geçirin. Otomatik tarama araçları kullanın ve mümkünse sızma testleri (penetration testing) yaptırın.

10. Güvenlik Başlıklarının (Security Headers) Kullanılmaması​

Tarayıcıya ekstra güvenlik katmanları ekleyen HTTP başlıklarını (header) göndermemek.

Savunma: Sunucu yapılandırmanızda veya PHP kodunuzda şu başlıkları ekleyin:
  • Content-Security-Policy (CSP): Sitede hangi kaynakların (script, stil) çalıştırılabileceğini sınırlar (XSS'e karşı çok etkilidir).
  • Strict-Transport-Security (HSTS): Tarayıcıyı sadece HTTPS kullanmaya zorlar.
  • X-Content-Type-Options: Tarayıcının dosya türlerini "koklamasını" engeller.
Güvenlik bir hedef değil, asla bitmeyen bir yolculuktur.
eminuruk
Üye
Üye
Katılım31 Oca 2026
Konular10
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
24.04.2026 14:41 #2
Paylaşım için teşekkürler
sem06
Üye
Üye
Katılım23 Kas 2025
Konular11
Mesajlar71
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
30.04.2026 17:45 #3
Paylaşım için teşekkürler
Sercan52
Üye
Üye
Katılım25 Kas 2025
Konular8
Mesajlar72
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 14:22 #4
Paylaşım için teşekkürler.
ntg12
Üye
Üye
Katılım20 Ara 2025
Konular4
Mesajlar49
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
09.05.2026 16:46 #5
Eline sağlık! Paylaşım için teşekkürler.
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
İlan Yan banner placeholder