SQL parametrlangan so‘rovlar


baham ko'ring

SQL parametrlari - SQL injeksiyasining oldini olish

SQL parametrlari (Parametrlashtirilgan so‘rovlar) FROM SQL in’ektsiyalarini veb-saytni himoya qilish uchun ishlatilishi mumkin.

Parametrlangan so‘rov - bu kiritilgan qiymatlarni to‘g‘ridan-to‘g‘ri so‘rov matniga qo‘shish o‘rniga to‘ldiruvchilardan foydalanadigan SQL buyrug‘i. So‘rov bajarilganda to‘ldiruvchilar haqiqiy qiymatlar bilan almashtiriladi. Bu so‘rovlarni xavfsizroq va qayta foydalanishga yaroqli qiladi.

Ko‘pgina ma’lumotlar bazalari parametrlangan so‘rovlarni qo‘llab-quvvatlaydi, ammo sintaksisi farq qiladi:

  • MySQL parametrlar uchun ? belgisidan foydalanadi
  • SQL Server parametrlar uchun @ belgisidan foydalanadi
  • PostgreSQL parametrlar uchun $ belgisidan foydalanadi

SQL parametrlari SQL so‘roviga bajarilish vaqtida, nazorat ostida qo‘shiladi.

ASP.NET Razor misoli

userid = getRequestString("UserId");
query = "SELECT * FROM Users WHERE UserId = @userid";
db.Execute(query, userid);

IN SQL Server parametrlari @ belgisi bilan taqdim etilishini unutmang.

SQL mexanizmi har bir parametrni uning ustuniga to‘g‘ri kelishini va bajarilishi kerak bo‘lgan SQLning bir qismi sifatida emas, balki tom ma’noda ishlanishini tekshirish uchun tekshiradi.

ANOTHER misoli

cname = getRequestString("CustomerName");
caddress = getRequestString("Address");
ccity = getRequestString("City");
query = "INSERT INTO Customers (CustomerName, Address, City) Values(@cname, @caddress, @ccity)";
db.Execute(query, cname, caddress, ccity);


Misollar

Quyidagi misollar ba’zi keng tarqalgan veb tillarida parametrlangan so‘rovlarni qanday yaratishni ko‘rsatadi.

SELECT STATEMENT IN ASP.NET:

userid = getRequestString("UserId");
query = "SELECT * FROM Customers WHERE CustomerId = @userid";
cmd = new SqlCommand(query);
cmd.Parameters.AddWithValue("@userid", userid);
cmd.ExecuteReader();

ASP.NET da INSERT INTO buyrug‘i:

cname = getRequestString("CustomerName");
caddress = getRequestString("Address");
ccity = getRequestString("City");
query = "INSERT INTO Customers (CustomerName, Address, City) Values(@cname, @caddress, @ccity)";
cmd = new SqlCommand(query);
cmd.Parameters.AddWithValue("@cname", cname);
cmd.Parameters.AddWithValue("@caddress", caddress);
cmd.Parameters.AddWithValue("@ccity", ccity);
cmd.ExecuteNonQuery();



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!