πŸ’‰
Xavfsizlik

SQL injection: nima va qanday himoyalanish

04.02.2025
← Barcha maqolalar

SQL injection β€” foydalanuvchi yozgan ma'lumot orqali sayt DB'siga yomon SQL kiritish. 2024 OWASP Top 10'da hali ham birinchi.

Misol

Login forma: SELECT * FROM users WHERE name='$name' AND password='$pass'. Foydalanuvchi name maydoniga: admin' OR '1'='1 β€” query bo'ladi: WHERE name='admin' OR '1'='1' β€” har doim true, ya'ni admin'ga kiradi.

Yagona to'g'ri yo'l: Prepared Statements

PHP PDO: $st = $pdo->prepare('SELECT * FROM users WHERE name=?'); $st->execute([$name]); β€” foydalanuvchi yozgani SQL emas, parametr deb tushuniladi.

Nima bo'lmasin?

1) String concatenation: 'WHERE id=' . $_GET['id'] β€” eng xavfli. 2) escape funksiyalari (mysql_real_escape_string) β€” ishonchsiz, eskirgan. 3) Whitelist tekshiruvlar bilan birlashtirsa β€” yaxshi, lekin yagona himoya emas.

ORM

Eloquent (Laravel), Doctrine, Sequelize β€” avtomatik prepared statements ishlatadi.

Statik analiz

PHPStan, Psalm β€” SQL injection mumkin joylarni topadi.

WAF

Cloudflare WAF, ModSecurity β€” SQL injection hujumlarni server darajasida to'sadi. Ikkinchi qatlam himoya.

Penetration test

SQLMap β€” ochiq vositasi. O'z saytingizni sinab ko'ring. Yiliga 1 marta professional pentest tavsiya.

O'xshash maqolalar

πŸ” Parol menejerlar β€” Bitwarden, 1Password, LastPass va KeePass tanlovi 🍯 Honeypot β€” formada yashirin maydon, botlarni ushlaydi va spamni to'xtatadi πŸ“„ /.well-known/security.txt β€” xavfsizlik bo'yicha bog'lanish standart πŸ“‹ GDPR moslik β€” Yevropa ma'lumotlarini himoya qilish majburiyatlari
🌐 Til
πŸ‡ΊπŸ‡Ώ O'zbek βœ“ πŸ‡ΊπŸ‡Ώ ЎзбСк πŸ‡·πŸ‡Ί Русский πŸ‡¬πŸ‡§ English