İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Güvenlik

PHP PDO ile SQL Injection Koruması

Bu yazı, PHP PDO ile SQL Injection Koruması konusunu temelden ele alıyor. Önce kavramın ne işe yaradığını, ardından 5 kritik noktayı ve bunları bir araya getiren PHP örneğini adım adım inceleyeceğiz.

Ferdi GidenFerdi Giden 2 dk okuma 51
PHP PDO ile SQL Injection Koruması
İçindekiler
  1. Konuya genel bakış
  2. Bilmeniz gereken 5 temel nokta
  3. Uygulamalı örnek
  4. Avantajları
  5. Özetle

Bu yazı, PHP PDO ile SQL Injection Koruması konusunu temelden ele alıyor. Önce kavramın ne işe yaradığını, ardından 5 kritik noktayı ve bunları bir araya getiren PHP örneğini adım adım inceleyeceğiz.

Konuya genel bakış

Konunun özünde şu başlıklar yer alıyor: Hazırlanmış ifadeler, Yer tutucular, Beyaz liste, Gerçek hazırlama ve Hata modu. Bu başlıkları ayrı ayrı ele almak, her parçanın hangi sorunu çözdüğünü görmeyi kolaylaştırır.

Bilmeniz gereken 5 temel nokta

  • Hazırlanmış ifadeler: Sorgu ve veri ayrı gönderilir, kullanıcı girdisi SQL olarak yorumlanmaz.
  • Yer tutucular: ? veya :ad yer tutucuları değer içindir; tablo ve sütun adları yer tutucuyla verilemez.
  • Beyaz liste: ORDER BY gibi dinamik sütun adlarını izin verilen değerler listesinden seçin.
  • Gerçek hazırlama: PDO::ATTR_EMULATE_PREPARES false ile hazırlama işi MySQL sunucusuna bırakılır.
  • Hata modu: ERRMODE_EXCEPTION ile hatalar sessizce yutulmaz, ayrıntılar kullanıcıya gösterilmeden günlüğe yazılır.

Uygulamalı örnek

Teoriyi somutlaştırmak için kısa bir PHP örneğine bakalım:

$pdo = new PDO('mysql:host=localhost;dbname=uygulama;charset=utf8mb4', $kullanici, $sifre, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false,
]);

$sorgu = $pdo->prepare('SELECT id, ad FROM uyeler WHERE eposta = ? AND durum = ?');
$sorgu->execute([$_POST['eposta'] ?? '', 'aktif']);
$uye = $sorgu->fetch(PDO::FETCH_ASSOC);

Örnek bilinçli olarak kısa tutuldu; gerçek projede hata yönetimi ve günlükleme gibi katmanlar eklenmelidir.

PHP 8 ile gelen match ifadesi ve isimli argümanlar, uzun switch ve parametre listelerini daha okunur hâle getirir.

Avantajları

PHP PDO ile SQL Injection Koruması konusunu doğru uygulamanın başlıca kazanımları şunlar:

  • Girdi kaçışlamayı unutma riskini ortadan kaldırır
  • Aynı sorgu farklı değerlerle tekrar tekrar çalıştırılabilir
  • Kod okunur kalır; SQL ve veri birbirine karışmaz
  • Tüm büyük veritabanı sürücülerinde aynı API ile çalışır

Özetle

PHP PDO ile SQL Injection Koruması konusunda ele aldığımız 5 nokta, günlük çalışmada en sık ihtiyaç duyulan kısmı kapsıyor. Özellikle Hazırlanmış ifadeler ve Hata modu başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.

İlgili içerikler:

Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

Ücretsiz Teklif Al