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

PHP haqida
PHP haqida

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

PHP
PHP

PHP dasturlash tili haqida ma'lumot

Java dasturlash tili
Java dasturlash tili

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

JAVA DASTURLASH TILI
JAVA DASTURLASH TILI

JAVA dasturlash tili haqida ma'lumot

Yangi maqolalar
Go
Go dasturlash tili haqida ma'lumot
Swift
Swift dasturlash tili haqida ma'lumot
Ruby
Ruby dasturlash tili haqida ma'lumot
C#
C# haqida ma'lumot
C++
C++ dasturlash tili haqida ma'lumot