CodeBlanks Logo Icon CodeBlanks

Parameterized query

Parameterized query ile SQL injection koruması öğrenirsin.

Parameterized query

Parametreli sorgu, SQL dizgisi ile kullanıcı verisini ayıran tekniktir. SQL dizgisinde $1, $2 gibi yer tutucular kullanılır; gerçek değerler ayrı bir dizi olarak verilir.

Örnek: pool.query("SELECT * FROM users WHERE email = $1", [email]). Bu, SQL enjeksiyonunu önler; çünkü kullanıcı verisi asla SQL dizgisiyle birleşmez. PostgreSQL, yer tutucuları güvenli şekilde değiştirir. Parametreli sorgu, veritabanı güvenliğinin temel ilkesidir.

Neden parametreli?

Parametresiz sorgu tehlikelidir. pool.query("SELECT * FROM users WHERE name = '" + ad + "'") deseninde, kötü niyetli bir ad değeri SQL'i değiştirebilir. Örneğin ad = "' OR '1'='1" tüm kullanıcıları döndürür.

Parametreli sorguda bu mümkün değildir. $1 yer tutucusu yalnızca bir değeri temsil eder; SQL yapısını değiştiremez. Bu yüzden her zaman parametreli sorgu kullan; kullanıcıdan gelen veriyi asla doğrudan SQL'e ekme.

Uygulama Sorgu dizgisini yaz

Bir SQL dizgisi tanımla: SELECT * FROM users WHERE id = $1. Bu dizgiyi text değişkenine ata. text'i console.log ile yaz.

Başlangıç kodu

index.js
// sorgu dizgisini tanımla

// dizgiyi yaz

Örnek çözüm

index.js
const text = "SELECT * FROM users WHERE id = $1";
console.log(text);

Beklenen çıktı

SELECT * FROM users WHERE id = $1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Parçayı rolüne eşle

Kavram Anlamı
$1 Yer tutucu
values dizisi Parametre değerleri
pool.query Sorgu çalıştırır
SQL enjeksiyonu Saldırı türü

2 Yer tutucuyu tamamla

Soru
const text = "SELECT * FROM users WHERE id = ____";
Cevap
const text = "SELECT * FROM users WHERE id = $1";

Açıklama: PostgreSQL'de $1 bir parametre yer tutucusudur.

3 Parametreli sorgu neyi önler?

  • SQL enjeksiyonunu Doğru cevap
  • Bellek sızıntısını
  • CSS hatasını
  • Ağ yavaşlamasını

Açıklama: Parametreli sorgu SQL enjeksiyonunu önler.

İleri seviye bölümündeki tüm dersler