htmlspecialchars() funksiyasi PHP-da XSS hujumlaridan himoyalanish uchun ishlatiladi. U foydalanuvchi tomonidan kiritilgan HTML maxsus belgilarini shifrlaydi va brauzer bajarib yubormasligi uchun matn sifatida ko‘rsatadi. Misol (XSS hujumiga qarshi)
<?php
$user_input = "<script>alert('XSS hujumi!');</script>";
echo htmlspecialchars($user_input);
?>
🔹 Natija:
<script>alert('XSS hujumi!');</script>Bu kod brauzerda matn sifatida ko‘rinadi va bajarmaydi.
Asosiy o‘zgartirishlar
| Belgi | O‘zgargan holati |
|
< | < ||
> | > ||
" | " ||
' | ' ||
& | `& |Qo‘shimcha foydalanish
htmlspecialchars($text, ENT_QUOTES, 'UTF-8', false);
-
ENT_QUOTES – Ikkala tirnoqni (", ') ham shifrlaydi. -
UTF-8 – Kodlash formatini belgilaydi. -
false – Oldin shifrlangan belgilarni qayta shifrlamaydi. ✅ Xulosa: Har doim foydalanuvchi kiritgan HTML kodlarini xavfsiz chiqarish uchun
htmlspecialchars() funksiyasidan foydalaning! 🚀### 🛑 SQL Injection xavfi nima?
SQL Injection (SQLi) — bu hujum turi bo‘lib, xaker foydalanuvchi tomonidan kiritilgan ma’lumotlar orqali SQL so‘rovlariga zararli kod qo‘shib, bazani boshqarishga harakat qiladi.
---
## ⚠️ SQL Injection qanday ishlaydi?
Agar siz foydalanuvchidan kelayotgan ma’lumotlarni to‘g‘ridan-to‘g‘ri SQL so‘rovga qo‘shsangiz, hujumchi so‘rovni buzib, zararli buyruqlarni bajarishi mumkin.
❌ Noto‘g‘ri kod (SQL Injection xatarlik)
🔴 Agar hujumchi shunday kiritish kiritsa:
Shunda SQL so‘rovi shunday bo‘lib qoladi:
➡️ Bu hamma foydalanuvchilarni chiqarib yuboradi, chunki
---
## 🛡 SQL Injectiondan himoyalanish usullari
1️⃣ mysqli_real_escape_string() – ma’lumotlarni tozalash
2️⃣ Prepared Statements (Tayyorlangan so‘rovlar) – xavfsiz usul
---
### ✅ 1. mysqli_real_escape_string() bilan himoya qilish
🔹 Natija: Hujumchi qo‘shgan zararli
---
### ✅ 2. Prepared Statements (Tavsiya etiladi!)
🔹 Tayyorlangan so‘rovlar hujumchi kiritgan buyruqlarni bajariladigan kod emas, balki matn sifatida ko‘radi.
---
## 🚀 Sizning kodingizda SQL Injectiondan himoyalanish
Sizning fayl nomlarini bazaga kiritish kodini quyidagicha xavfsizroq qildim:
✅ Endi foydalanuvchi zararli kod kiritishga harakat qilsa ham, SQL Injection ishlamaydi! 🚀
SQL Injection (SQLi) — bu hujum turi bo‘lib, xaker foydalanuvchi tomonidan kiritilgan ma’lumotlar orqali SQL so‘rovlariga zararli kod qo‘shib, bazani boshqarishga harakat qiladi.
---
## ⚠️ SQL Injection qanday ishlaydi?
Agar siz foydalanuvchidan kelayotgan ma’lumotlarni to‘g‘ridan-to‘g‘ri SQL so‘rovga qo‘shsangiz, hujumchi so‘rovni buzib, zararli buyruqlarni bajarishi mumkin.
❌ Noto‘g‘ri kod (SQL Injection xatarlik)
$user_input = $_GET['username'];
$query = "SELECT * FROM users WHERE username = '$user_input'";
$result = mysqli_query($connect, $query);
🔴 Agar hujumchi shunday kiritish kiritsa:
' OR '1'='1
Shunda SQL so‘rovi shunday bo‘lib qoladi:
SELECT * FROM users WHERE username = '' OR '1'='1'
➡️ Bu hamma foydalanuvchilarni chiqarib yuboradi, chunki
'1'='1' doim TRUE.---
## 🛡 SQL Injectiondan himoyalanish usullari
1️⃣ mysqli_real_escape_string() – ma’lumotlarni tozalash
2️⃣ Prepared Statements (Tayyorlangan so‘rovlar) – xavfsiz usul
---
### ✅ 1. mysqli_real_escape_string() bilan himoya qilish
$user_input = mysqli_real_escape_string($connect, $_GET['username']);
$query = "SELECT * FROM users WHERE username = '$user_input'";
$result = mysqli_query($connect, $query);
🔹 Natija: Hujumchi qo‘shgan zararli
' OR '1'='1 kod odatdagi matn sifatida ko‘riladi, SQL so‘rov buzilmaydi.---
### ✅ 2. Prepared Statements (Tavsiya etiladi!)
$stmt = $connect->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $_GET['username']);
$stmt->execute();
$result = $stmt->get_result();🔹 Tayyorlangan so‘rovlar hujumchi kiritgan buyruqlarni bajariladigan kod emas, balki matn sifatida ko‘radi.
---
## 🚀 Sizning kodingizda SQL Injectiondan himoyalanish
Sizning fayl nomlarini bazaga kiritish kodini quyidagicha xavfsizroq qildim:
$safe_original_file_name = mysqli_real_escape_string($connect, $file_name_only);
$safe_translated_file_name = mysqli_real_escape_string($connect, $converted_file_name);
$file_extension = mysqli_real_escape_string($connect, $file_extension);
$query = "INSERT INTO database (original_file_name, translated_file_name, file_size, file_mime_type, file_url, created_at)
VALUES ('$safe_original_file_name', '$safe_translated_file_name', '$file_size', '$file_extension', '$file_url', NOW())";
✅ Endi foydalanuvchi zararli kod kiritishga harakat qilsa ham, SQL Injection ishlamaydi! 🚀
JWT (JSON Web Token) — bu JSON formatidagi ma'lumotlarni xavfsiz tarzda uzatish uchun ishlatiladigan ochiq standart (RFC 7519). JWT autentifikatsiya va ma'lumotlarni tasdiqlash uchun keng qo‘llaniladi.
JWT qanday ishlaydi?
JWT uchta asosiy qismdan iborat:
1. Header (Sarlavha) – Algoritm va token turi haqida ma’lumot saqlaydi.
2. Payload (Yuk) – Token ichidagi ma’lumotlar (masalan, foydalanuvchi ID, rollar, vaqtlar).
3. Signature (Imzo) – Tokenning to‘g‘riligini tekshirish uchun ishlatiladi.
JWT quyidagi shaklda bo‘ladi:
header.payload.signature
Har bir qismi Base64Url formatida kodlanadi va nuqta (.) bilan ajratiladi.
JWT dan qanday foydalaniladi?
1. Foydalanuvchi tizimga kirganda, server unga JWT token yaratib beradi.
2. Har bir so‘rovda foydalanuvchi shu tokenni Authorization sarlavhasi orqali yuboradi:
Authorization: Bearer YOUR_JWT_TOKEN
3. Server tokenni tekshiradi va agar u yaroqli bo‘lsa, so‘rovni bajaradi.
JWT token yaratish (PHP misolida)
PHP-da JWT yaratish uchun Firebase\JWT kutubxonasidan foydalanish mumkin:
use Firebase\JWT\JWT;
$key = "secret_key"; // Maxfiy kalit
$payload = [
"user_id" => 123,
"role" => "admin",
"iat" => time(), // Yaratilgan vaqti
"exp" => time() + 3600 // 1 soatdan keyin eskiradi
];
// JWT yaratish
$jwt = JWT::encode($payload, $key, 'HS256');
echo $jwt;
JWT tokenni tekshirish
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
try {
$decoded = JWT::decode($jwt, new Key($key, 'HS256'));
print_r($decoded);
} catch (Exception $e) {
echo "Token noto‘g‘ri yoki eskirgan!";
}
Afzalliklari
✔️ Sessiyalarni saqlash shart emas
✔️ JSON formatda oson ishlash mumkin
✔️ Avtorizatsiya jarayonini tezlashtiradi
Kamchiliklari
❌ Tokenni bekor qilish qiyin
❌ Xavfsizlik uchun maxfiy kalitni yaxshi himoyalash kerak
Agar siz JWT autentifikatsiyani Telegram botingiz yoki boshqa tizimlar bilan bog‘lamoqchi bo‘lsangiz, maxfiy kalit va token muddatlarini to‘g‘ri sozlash juda muhim.
JWT qanday ishlaydi?
JWT uchta asosiy qismdan iborat:
1. Header (Sarlavha) – Algoritm va token turi haqida ma’lumot saqlaydi.
2. Payload (Yuk) – Token ichidagi ma’lumotlar (masalan, foydalanuvchi ID, rollar, vaqtlar).
3. Signature (Imzo) – Tokenning to‘g‘riligini tekshirish uchun ishlatiladi.
JWT quyidagi shaklda bo‘ladi:
header.payload.signature
Har bir qismi Base64Url formatida kodlanadi va nuqta (.) bilan ajratiladi.
JWT dan qanday foydalaniladi?
1. Foydalanuvchi tizimga kirganda, server unga JWT token yaratib beradi.
2. Har bir so‘rovda foydalanuvchi shu tokenni Authorization sarlavhasi orqali yuboradi:
Authorization: Bearer YOUR_JWT_TOKEN
3. Server tokenni tekshiradi va agar u yaroqli bo‘lsa, so‘rovni bajaradi.
JWT token yaratish (PHP misolida)
PHP-da JWT yaratish uchun Firebase\JWT kutubxonasidan foydalanish mumkin:
use Firebase\JWT\JWT;
$key = "secret_key"; // Maxfiy kalit
$payload = [
"user_id" => 123,
"role" => "admin",
"iat" => time(), // Yaratilgan vaqti
"exp" => time() + 3600 // 1 soatdan keyin eskiradi
];
// JWT yaratish
$jwt = JWT::encode($payload, $key, 'HS256');
echo $jwt;
JWT tokenni tekshirish
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
try {
$decoded = JWT::decode($jwt, new Key($key, 'HS256'));
print_r($decoded);
} catch (Exception $e) {
echo "Token noto‘g‘ri yoki eskirgan!";
}
Afzalliklari
✔️ Sessiyalarni saqlash shart emas
✔️ JSON formatda oson ishlash mumkin
✔️ Avtorizatsiya jarayonini tezlashtiradi
Kamchiliklari
❌ Tokenni bekor qilish qiyin
❌ Xavfsizlik uchun maxfiy kalitni yaxshi himoyalash kerak
Agar siz JWT autentifikatsiyani Telegram botingiz yoki boshqa tizimlar bilan bog‘lamoqchi bo‘lsangiz, maxfiy kalit va token muddatlarini to‘g‘ri sozlash juda muhim.
public function bot($method, $datas = [])
{
static $ch = null;
$url = "https://api.telegram.org/bot" . MYHEMIS . "/" . $method;
if ($ch === null) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/x-www-form-urlencoded"
]);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TCP_FASTOPEN, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); // 2 soniya ichida bog‘lanmasa, bekor qilinadi
curl_setopt($ch, CURLOPT_TIMEOUT, 4); // Maksimal kutish vaqti
curl_setopt($ch, CURLOPT_NOSIGNAL, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, false);
curl_setopt($ch, CURLOPT_FORBID_REUSE, false);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($datas));
$res = curl_exec($ch);
return $res ? json_decode($res, true) : curl_error($ch);
}
Bu kod Telegram Bot API so‘rovlarini tezlashtirish uchun
curl sessiyasini qayta ishlatadi. 🔹 Asosiy optimallashtirishlar:
-
static $ch → Bitta `curl` sessiyasidan qayta foydalanadi. -
CURLOPT_TCP_FASTOPEN → Tez ulanish imkonini beradi. -
CURLOPT_CONNECTTIMEOUT = 2, CURLOPT_TIMEOUT = 4 → Tez javob olish uchun cheklovlar. -
CURLOPT_FRESH_CONNECT = false, CURLOPT_FORBID_REUSE = false → Sessiyani qayta ishlatadi. 🚀 Natija: Kam resurs talab qiladi, tez ishlaydi!
function this($column, $table)
{
static $cache = [];
global $connect, $user_id;
$key = $table . '_' . $column . '_' . $user_id;
if (isset($cache[$key])) {
return $cache[$key];
}
$query = "SELECT `$column` FROM `$table` WHERE user_id = '{$user_id}' LIMIT 1";
$result = $connect->query($query);
$cache[$key] = ($result && $row = $result->fetch_assoc()) ? $row[$column] : null;
return $cache[$key];
}
$login = this('login', 'users'); // users bazasining login ustuni qiymatini olish.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
if ($data == "video_note") {
$user->request('sendMessage', [
'chat_id' => $chat_id,
'text' => "Video yuboring, men dumaloq video shaklida qilib beraman.",
'parse_mode' => 'markdown',
'reply_markup' => $round_video_menu,
]);
file_put_contents("step/convert/$chat_id.step", "awaiting_round_video");
exit();
}
$current_step = file_get_contents("step/convert/$chat_id.step");
if ($current_step == "awaiting_round_video") {
$uploaded_video = $message->video;
$video_file_id = $uploaded_video->file_id;
$file_info = $user->request('getFile', ['file_id' => $video_file_id]);
$file_path = $file_info->result->file_path;
$local_video_path = "convert/$chat_id.mp4";
file_put_contents($local_video_path, file_get_contents("https://api.telegram.org/file/bot" . API_KEY . "/" . $file_path));
$user->request('sendVideoNote', [
'chat_id' => $chat_id,
'videonote' => new CURLFile($local_video_path),
]);
unlink($local_video_path);
unlink("step/convert/$chat_id.step");
$user->request('sendMessage', [
'chat_id' => $chat_id,
'text' => "♻️ Bajarildi ✓",
'parse_mode' => 'markdown',
'reply_markup' => $convert_menu,
]);
exit();
}Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Composer — bu PHP loyihalaringizga kerakli kutubxonalarni oson o‘rnatish va boshqarish uchun ishlatiladigan vosita. U avtomatik yuklash, versiya nazorati va bog‘liq kutubxonalarni ham hal qiladi.
@phpdevelopers
@phpdevelopers
Cleaner.bat
3.1 KB
♻️ Kompyuterni optimal ishlashi uchun keshlarni tozalovchi fayl.
✳️ Quyidagilar tozalanadi.
[1/15] 🔄 DNS keshini tozalash...
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
[2/15] 🗑 Temp fayllarni tozalash...
[3/15] 🚀 Prefetch keshini tozalash...
[4/15] 🔄 Windows Update keshini tozalash...
[5/15] 🧹 Disk Cleanup ishga tushirilmoqda...
[6/15] 🚀 RAM xotirasini tozalash...
[7/15] ❌ Superfetch va SysMain xizmatlarini o‘chirish...
[8/15] 🗑 Chiqindilar qutisini tozalash...
[9/15] 🌐 Internetni optimallashtirish (Nettozlash)...
[10/15] 🛠 Diskni optimallashtirish...
[11/15] ❌ Keraksiz xizmatlarni o‘chirish...
[12/15] 🔧 Keraksiz AutoRun dasturlarini o‘chirish...
[13/15] 🚀 RAM ishlatilishini optimallashtirish...
[14/15] 🔄 Windows avtomatik tozalashni yoqish...
[15/15] 🔍 Xavfsizlik tekshiruvi...
✳️ Quyidagilar tozalanadi.
[1/15] 🔄 DNS keshini tozalash...
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
[2/15] 🗑 Temp fayllarni tozalash...
[3/15] 🚀 Prefetch keshini tozalash...
[4/15] 🔄 Windows Update keshini tozalash...
[5/15] 🧹 Disk Cleanup ishga tushirilmoqda...
[6/15] 🚀 RAM xotirasini tozalash...
[7/15] ❌ Superfetch va SysMain xizmatlarini o‘chirish...
[8/15] 🗑 Chiqindilar qutisini tozalash...
[9/15] 🌐 Internetni optimallashtirish (Nettozlash)...
[10/15] 🛠 Diskni optimallashtirish...
[11/15] ❌ Keraksiz xizmatlarni o‘chirish...
[12/15] 🔧 Keraksiz AutoRun dasturlarini o‘chirish...
[13/15] 🚀 RAM ishlatilishini optimallashtirish...
[14/15] 🔄 Windows avtomatik tozalashni yoqish...
[15/15] 🔍 Xavfsizlik tekshiruvi...
Please open Telegram to view this post
VIEW IN TELEGRAM
Timestamp — bu kompyuter tizimlari, dasturlar va ma’lumotlar bazalarida aniq vaqtni (sana va soatni) raqamli ko‘rinishda ifodalovchi qiymat. Odatda bu qiymat 1970-yil 1-yanvar 00:00:00 UTC dan boshlab o‘tgan soniyalar soni tarzida saqlanadi (bu format Unix timestamp deb ataladi).
---
Timestamp nima uchun kerak?
1. Vaqtni aniq belgilash uchun
Masalan: foydalanuvchi tizimga kirgan, ma’lumot qo‘shgan, o‘zgartirgan yoki o‘chirgan vaqtni aniqlash.
2. Ma’lumotlarni saralash va tartiblash uchun
Eng yangi yoki eski yozuvlarni ko‘rsatish.
3. Tizimlarda log yuritish
Harakatlar tarixini (loglar) yozishda foydalanuvchi qachon nima qilganini ko‘rsatish uchun.
4. Sessionlar yoki tokenlar muddati tugashini aniqlash uchun
Masalan: foydalanuvchi login qilgandan so‘ng, 1 soat ichida sessiyasi tugasin.
5. Vaqt zonalari bilan ishlashda
Har bir foydalanuvchining lokal vaqti bilan muomala qilish.
---
Tarixi
Unix timestamp birinchi marta 1970-yil 1-yanvar 00:00:00 UTC vaqtini “epoch” deb qabul qilgan holda Unix tizimlarida joriy qilingan.
Bu tizim dastlab C dasturlash tilidagi time_t turida ifodalanib, kompyuter xotirasida son ko‘rinishida saqlashni osonlashtirgan.
---
Agar sizda timestampni PHP, MySQL, yoki boshqa texnologiyalarda qanday ishlatilishi** bo‘yicha savollar bo‘lsa, mamnuniyat bilan tushuntiraman.
---
Timestamp nima uchun kerak?
1. Vaqtni aniq belgilash uchun
Masalan: foydalanuvchi tizimga kirgan, ma’lumot qo‘shgan, o‘zgartirgan yoki o‘chirgan vaqtni aniqlash.
2. Ma’lumotlarni saralash va tartiblash uchun
Eng yangi yoki eski yozuvlarni ko‘rsatish.
3. Tizimlarda log yuritish
Harakatlar tarixini (loglar) yozishda foydalanuvchi qachon nima qilganini ko‘rsatish uchun.
4. Sessionlar yoki tokenlar muddati tugashini aniqlash uchun
Masalan: foydalanuvchi login qilgandan so‘ng, 1 soat ichida sessiyasi tugasin.
5. Vaqt zonalari bilan ishlashda
Har bir foydalanuvchining lokal vaqti bilan muomala qilish.
---
Tarixi
Unix timestamp birinchi marta 1970-yil 1-yanvar 00:00:00 UTC vaqtini “epoch” deb qabul qilgan holda Unix tizimlarida joriy qilingan.
Bu tizim dastlab C dasturlash tilidagi time_t turida ifodalanib, kompyuter xotirasida son ko‘rinishida saqlashni osonlashtirgan.
---
Agar sizda timestampni PHP, MySQL, yoki boshqa texnologiyalarda qanday ishlatilishi** bo‘yicha savollar bo‘lsa, mamnuniyat bilan tushuntiraman.
function safeString($connect, $string)
{
return mysqli_real_escape_string($connect, htmlspecialchars($string, ENT_QUOTES, 'UTF-8'));
}
@phpdevelopers
Please open Telegram to view this post
VIEW IN TELEGRAM
SELECT user_id
FROM users
WHERE user_id NOT IN (
SELECT user_id FROM global_users
);
ℹ️ Bu komanda bilan siz faqat users jadvalida bor, ammo global_users da mavjud bo‘lmagan user_id ni chiqaradi. Siz aytgandek, bu yerda 1 ta ortiqcha bo‘lishi mumkin.
Ya'ni: Qaysidur bazaga bir xil foydanuvchi malumoti saqlanmagan bo'lsa uni qidirish uchun ishlatiladigan kod.
🔥3❤2💩1
🕒 Cron Job: Faqat kun davomida ishlaydigan sozlama
Agar sizga cron job skriptni faqat kun davomida, ya’ni ertalabdan kechgacha har daqiqada ishga tushurishi kerak bo‘lsa, kechasi esa umuman ishlamasligi kerak bo‘lsa — quyidagi cron ifodasi aynan siz uchun:
Nima qiladi bu cron?
Har kuni ertalab soat 06:00 dan kechki 23:59 gacha har daqiqada skriptni ishga tushuradi.
Tungi 00:00 dan 05:59 oralig‘ida esa umuman ishlamaydi, ya’ni kechasi serveringiz resurslarini tejaydi.
Qachon foydali bo‘ladi?
📍 Kechasi ishlashi shart bo‘lmagan jarayonlar uchun (masalan, Telegram bot monitoringi, statistika yig‘ish, foydalanuvchi faoliyatiga bog‘liq avtomatlashtirishlar va h.k.)
💡 Server yuklamasini optimallashtirish kerak bo‘lsa.
Agar sizga cron job skriptni faqat kun davomida, ya’ni ertalabdan kechgacha har daqiqada ishga tushurishi kerak bo‘lsa, kechasi esa umuman ishlamasligi kerak bo‘lsa — quyidagi cron ifodasi aynan siz uchun:
* 6-23 * * * php /path/to/your/script.php
Nima qiladi bu cron?
Har kuni ertalab soat 06:00 dan kechki 23:59 gacha har daqiqada skriptni ishga tushuradi.
Tungi 00:00 dan 05:59 oralig‘ida esa umuman ishlamaydi, ya’ni kechasi serveringiz resurslarini tejaydi.
Qachon foydali bo‘ladi?
📍 Kechasi ishlashi shart bo‘lmagan jarayonlar uchun (masalan, Telegram bot monitoringi, statistika yig‘ish, foydalanuvchi faoliyatiga bog‘liq avtomatlashtirishlar va h.k.)
💡 Server yuklamasini optimallashtirish kerak bo‘lsa.
💩1