SQL parametrlangan so‘rovlar
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!
