
🛡 PHP va MySQL Xavfsizligi: Xatolar, Xuruj Turlari va Himoyalanish Yo
Ushbu maqolada PHP va MySQL asosida veb-ilova yozishda sodir bo‘ladigan xavfsizlik xatolari — SQL injection, XSS, CSRF, parollarni noto‘g‘ri saqlash, xavfli fay
1. Kirish
PHP va MySQL — veb-dasturlar uchun eng ko‘p qo‘llaniladigan texnologiyalar. Ammo noto‘g‘ri yozilgan kodlar orqali ularni buzish juda oson. Ushbu maqolada xavfli kodlar, xujum usullari va ularning oldini olish yo‘llari ko‘rib chiqiladi.
2. Eng Ko‘p Uchraydigan Xavfsizlik Xatolari
🔸 a) SQL Injection (So‘rovga suqilib kirish)
Xavfli kod:
php CopyEdit $id = $_GET['id']; $query = "SELECT * FROM users WHERE id = $id";
Nima bo‘ladi?
http CopyEdit ?id=1 OR 1=1
Bu barcha foydalanuvchilarni chiqarib yuboradi.
Himoya usuli:
php CopyEdit $stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id"); $stmt->execute(['id' => $_GET['id']]);
✅ PDO yoki MySQLi + tayyorlangan so‘rovlar (prepared statements) ishlating.
🔸 b) XSS (Cross-site Scripting)
Xavfli kod:
php CopyEdit echo $_GET['name'];
Foydalanuvchi quyidagicha havola yuboradi:
html CopyEdit <script>alert('hacked!')</script>
Himoya:
php CopyEdit echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
🔸 c) CSRF (Cross-Site Request Forgery)
Foydalanuvchi sahifani ochib, sizning sessiyangiz orqali zararli amal bajaradi.
Himoya:
- Har bir POST so‘rovga token joylash.
$_SESSION
bilan tokenni tekshirish.
3. MySQL Ma’lumotlar Bazasi Xavfsizligini Kuchaytirish
🔹 Foydalanuvchi Huquqlarini Cheklash
sql CopyEdit GRANT SELECT, INSERT ON mydb.* TO 'user'@'localhost';
Hech qachon root
foydalanuvchisi orqali kod yozmang.
🔹 Parollarni saqlash
Xato:
php CopyEdit $password = $_POST['password'];
To‘g‘ri:
php CopyEdit $hash = password_hash($_POST['password'], PASSWORD_DEFAULT);
Va tekshirish:
php CopyEdit if (password_verify($input_password, $hash)) { // muvaffaqiyat }
4. Fayllarni Yuklash Xavfsizligi
🔸 Xavfli kod:
php CopyEdit move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
🔸 Himoya:
- Faqat ruxsat etilgan fayl turlariga ruxsat bering:
php CopyEdit $allowed = ['jpg', 'png', 'pdf'];
- Fayl nomini o‘zgartiring:
php CopyEdit $filename = uniqid() . '.' . $ext;
5. Session va Cookie Xavfsizligi
🔹 Session hijacking oldini olish:
php CopyEdit ini_set('session.cookie_httponly', 1); session_start(); session_regenerate_id(true);
🔹 Cookie sozlamalari:
php CopyEdit setcookie("auth", $token, [ 'expires' => time() + 3600, 'secure' => true, 'httponly' => true, 'samesite' => 'Strict' ]);
6. Qo‘shimcha Himoya Choralari
- HTTPS ni majburan yoqing.
- Fayl va katalogga to‘g‘ri huquqlar bering (
chmod 755
,644
). .env
fayllarni.htaccess
orqali yopib qo‘ying:
apacheconf CopyEdit <Files .env> Order allow,deny Deny from all </Files>
7. Xulosa
PHP va MySQL bilan ishlaganda xavfsizlik — bu tanlov emas, majburiyat. Har bir foydalanuvchi kiritayotgan ma’lumotni ishonchsiz deb qabul qiling. Kodlaringizni himoya qilish orqali nafaqat foydalanuvchilaringiz, balki o‘zingizni ham himoya qilasiz.
Python — bu oson o‘rganiladigan, kuchli va keng tarqalgan dasturlash t...
PHP —bu server tomonida ishlaydigan ochiq kodli dasturlash tili bo‘lib...
PHP dasturlash tili haqida ma'lumot
Java — bu 1995-yilda Sun Microsystems tomonidan ishlab chiqilgan va ho...
JAVA dasturlash tili haqida ma'lumot