Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Prepared Statement'a Geçince Eski Kodlarımı Gördüm, Tüylerim Diken Diken Oldu!

asternix

Üye
Katılım
14 Mart 2026
Mesajlar
30
😱 O Eski Kodlar Ne Böyle?

Dostlar, selam. Bugün eski bir projemi, kendi yazdığım oyun sunucumu bakım için açtım. Amacım basit bir özellik eklemekti. Ama öyle bir şey gördüm ki, şu an klavyeme bakarken yüzüm kızarıyor. Eski query'lerime baktım ve hepsi, dümdüz string birleştirme ile çalışıyordu. Kullanıcı adı, şifre, item ID'si... Hepsi direk query string'inin içine ekleniyordu. mysql_query() veya mysqli ile. Kafayı yiyecektim resmen.

PHP:
$query = "SELECT  FROM users WHERE username='" . $username . "' AND password='" . $password . "'";

Yukarıdaki kodu görünce kalbim durdu. Meğer yıllarca, kendi sunucumda, tam bir SQL injection açığı cenneti yaratıyormuşum. Ve bunun farkında bile değilmişim. "Zaten kullanıcılar güvenilir" diye düşünmek en büyük hataymış.

🛡️ Prepared Statement Kurtarıcım Oldu

Geçen ay, bir gün canım sıkıldı ve "Acaba sunucuyu nasıl daha güvenli yaparım?" diye düşündüm. Araştırmalarım beni PDO ve Prepared Statement'a götürdü. İlk başta, "Bu kadar uğraşmaya değer mi?" dedim. Ama sonra basit bir test yaptım ve gördüm ki, eski yöntemle yazdığım login sistemine özel karakterlerle saldırı simüle edebiliyordum. İşte o an her şey değişti.

Yeni sistemi kurmak aslında çok kolaydı. Sadece alışmak biraz zaman aldı. Artık tüm veritabanı işlemlerim böyle:

PHP:
$stmt = $pdo->prepare("SELECT  FROM users WHERE username = :username AND password = :pass");
$stmt->execute(['username' => $username, 'pass' => $hashedPassword]);

Parametreler query'den ayrıldığı için, kullanıcıdan gelen veri ne olursa olsun, artık sadece bir veri olarak kalıyor. Sihir gibi bir şey. mysqli_real_escape_string() ile uğraşmaktan da kurtuldum.

🤔 Neden Bu Kadar Geç Kaldım?

Asıl soru bu. StackOverflow'da bile her yerde "USE PREPARED STATEMENTS!" diye bağırıyorlar. Ama ben, "Küçük proje işte, gerek yok" mantığıyla yıllarca bu açığı taşımışım. Şaka gibi ama gerçek. Güvenlik, "sonra hallederim" dediğiniz an sizi vuruyor.

Şimdi eski koda bakınca, o query'leri görmek beni gerçekten ürkütüyor. Tüylerim diken diken oluyor. Siz de eski projelerinize bir göz atın derim. Belki siz de benim gibi, farkında olmadan büyük riskler almışsınızdır.

Peki ya siz? Hiç eski bir kodunuza bakıp "Ben bunu nasıl yazmışım?" dediğiniz oldu mu? Prepared Statement dışında, benzer "keşke daha erken öğrenseydim" dediğiniz güvenlik önlemleri var mı?
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri