🛡 PHP va MySQL Xavfsizligi: Xatolar, Xuruj Turlari va Himoyalanish Yo

🛡 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.

Mashxur maqolalar
PYTHON haqida
PYTHON haqida

Python — bu oson o‘rganiladigan, kuchli va keng tarqalgan dasturlash t...

Java dasturlash tili
Java dasturlash tili

Java — bu 1995-yilda Sun Microsystems tomonidan ishlab chiqilgan va ho...

C#
C#

C# haqida ma'lumot

PHP
PHP

PHP dasturlash tili haqida ma'lumot

PHP haqida
PHP haqida

PHP —bu server tomonida ishlaydigan ochiq kodli dasturlash tili bo‘lib...

Yangi maqolalar
Internet tarmogining insonlarga foyda va zararlari
Zamonaviy davrda internet tarmoqlari hayotimizning ajralmas qismiga ay...
Sayohat uchun eng yaxshi joylar
Sayohat qilish har doim insonlarni yangi joylarni kashf etishga, madan...
Alisher Navoiy haqida qisqacha
Alisher Navoiy — o‘zbek adabiyoti va madaniyatining eng nufuzli shaxsl...
Dennis Ritchie — Zamonaviy Dasturlashning Otasi
U nafaqat biror dasturlash tilini yaratgan, balki butun IT dunyosining...
Go
Go dasturlash tili haqida ma'lumot