TGViewer
UzDevid UzDevid @uzdevid · 4.37K subscribers
Post #338 3.04K
SQL in'ektsiya – bu hujumchilarning veb-dasturdagi xavfsizlik zaifliklaridan foydalanib, ma'lumotlar bazasiga zararli SQL so'rovlarini yuborishi va natijada ma'lumotlarga ruxsatsiz kirishi yoki ularni o'zgartirishi mumkin bo'lgan xavfli hujum turi. Bu zaiflik odatda foydalanuvchi kiritgan ma'lumotlar to'g'ridan-to'g'ri SQL so'rovlariga qo'shilganda yuzaga keladi.

### SQL In'ektsiyaning Misoli

Quyidagi kod PHP tilida yozilgan oddiy login shakli:

<?php
$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($connection, $query);

Ushbu kodning zaifligi shundaki, foydalanuvchi tomonidan kiritilgan $username va $password qiymatlari to'g'ridan-to'g'ri SQL so'roviga qo'shiladi. Bu esa SQL in'ektsiyasiga olib kelishi mumkin.

### SQL In'ektsiya Hujumi

Tasavvur qiling, hujumchi quyidagi foydalanuvchi nomi va parolni kiritadi:

- Username: admin' --
- Password: anything

Natijada SQL so'rovi quyidagicha ko'rinishga ega bo'ladi:

SELECT * FROM users WHERE username = 'admin' -- ' AND password = 'anything'

`--` SQL so'rovini izohga (kommentariyaga) aylantiradi, natijada password qismi e'tibordan chetda qoladi. Bu so'rov barcha "admin" foydalanuvchilarini qaytaradi, va agar mavjud bo'lsa, hujumchi tizimga parolsiz kirishi mumkin.

### Zaiflikdan Qanday Qochish Mumkin

SQL in'ektsiyadan himoyalanish uchun quyidagi yondashuvlar qo'llanilishi kerak:

1. Tayyorlangan so'rovlar (Prepared Statements) va parametrlarni bog'lash: Bu usulda foydalanuvchi kiritgan ma'lumotlar SQL so'roviga to'g'ridan-to'g'ri qo'shilmaydi, balki parametr sifatida yuboriladi.

Misol (PHP va MySQLi):


   $stmt = $connection->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

2. Ma'lumotlarni sanitarizatsiya qilish va validatsiya qilish: Foydalanuvchi kiritgan ma'lumotlarni qabul qilishdan oldin, ularni to'g'ri shaklda ekanligini tekshirish lozim.

3. PDO bilan foydalanish: PDO (PHP Data Objects) bilan tayyorlangan so'rovlarni qo'llash xavfsizlikni oshiradi.

Misol:


   $stmt = $connection->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->execute(['username' => $username, 'password' => $password]);

4. Kiruvchi ma'lumotlarni cheklash: Foydalanuvchi kiritishi mumkin bo'lgan ma'lumotlarni cheklash va kerak bo'lsa, ma'lumotlarni maxsus formatga keltirish (masalan, raqamlar, elektron pochta manzillari va boshqalar).

Bu yondashuvlar SQL in'ektsiyadan himoyalanishga yordam beradi va veb-dastur xavfsizligini oshiradi.
  • 👍 11
  • 🔥 2
  • ❤ 1
More from @uzdevid
  1. Sep 24, 2026Kim nima desa desin, confluxga baza bilan ishlash uchun drayver qo'shdim. DataGrip analogi…
  2. Sep 22, 2026Opus 5.5 chiqdi, limitlarni reset qilish ham mumkin ekan, menga o'xshab 20%-da emas, 99%-d…
  3. Sep 22, 2026chiqaramiz nasib )) @uzdevid
  4. Sep 22, 2026Xa aytganchi, keyingi oyda macOS uchun ham chiqaramiz. Qo'llab-quvvatlash uchun: https://t…
  5. Sep 22, 2026Conflux 0.7.0 reliz qilindi. O'zgarishlar: - bug-lar to'g'rilandi - request-larni sozlash…
  6. Sep 19, 2026Til endi to'siq emas. Raya platformasida yangi imkoniyat. Kompyuteringizdan chiqayotgan ha…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →