Ko’pchilikning fikricha PHP da xavfsizlikning oldi olinmagan ekan

Ko’pchilikning fikricha PHP da xavfsizlikning oldi olinmagan ekan

Ko'pchilikning fikricha PHP da xavfsizlikning oldi olinmagan ekan

Salom.
Anchadan beri PHP da ishliman, va bir qancha joylarda PHP dan dars ham berdim. Va shu kunlarda qulog’imga har xil antiqa gaplar eshitila boshlandi.
O’quvchilar o’zining tanishlaridan (asosan dasturchilar, universitet/institut domlalar) so’rashsa PHP yaxshi emas, ASP.NET yaxshi. Nega? Chunki PHP da xafsizlik past (bu javob).
Bilmadim bu javobni bollarga berishdan oldin, shu gapni aytgan insonlar o’zlari PHP nimaligini bir o’qishsa bo’larmidi. PHP da qilingan saytlarni qanday buzishni bilmagan odam, undagi xavfsizlikni qanday tashkillashtirishni bilarmidi. Ha yana shunaqa fikrda bo’lgan dasturchilarga: Agar PHP da xavfsizlik shunchalar kam bo’lganda PHP hozirgi kunda bunchalar keng ko’lamda foydalanuvchilariga ega bo’lmasdi.

Ochig’i o’zim hali ASP da biror marotaba ishlab ko’rmaganman, aniqrog’i, sayt qilib ko’rmaganman. Unda xavfsizlikning oldi qanday olingan ekan, bu haqida umuman tasavvurga ega emasman. Lekin PHP da ancha saytlarni qildim, to’g’ri, unda SQL Injection, XSS kabi hujumlarga imkon yaratib ketgandirman, bu mani aybim bilan. Bu PHP yomon degani emas. Ha yana bu bilan ASP yomon demoqchimasman, har kimni xohishi har xil.

Agar sani boshing og’riyotgan bo’lsayu, san aptekadan boshqa dori olib ichib zararlansang, bunda ayb dorini ishlab chiqqanlarda emas, o’zingda bo’ladi.

Umuman xar qanday dasturning (jumladan web saytning) xavfsizligi, u tuzilayotgan dasturlash tilida emas, tuzayotgan dasturchining qo’lida bo’ladi.

Keling endi PHP da SQL Injection va XSS hujumlarni oldini olishni va ayb PHP da emas, dasturchining PHP dagi bilimi yetarli emasligida ekanligini ko’rsatib o’tsam.

SQL Injection ni oldini olish uchun, php fayl boshiga quyidagi kodni qo’shib qo’ysangiz, yetarli.

add_slashes($_GET);
add_slashes($_POST);
add_slashes($_COOKIE);

function add_slashes(&$arr) {
if (get_magic_quotes_gpc()) return;
foreach($arr as $key => &$value) {
if (is_array($value)) {
add_slashes($value);
}
else {
$value = addslashes($value);
}
}
}

Yoki php.ini dagi magic_quotes_gpc = On qilish lozim.

XSS – ni oldini olish uchun esa, kerakli joyda, ya’ni ma’lumotlar chiqayotganda yoki bazaga kiritilayotganda filterdan o’tkazish lozim.
Buning uchun PHP da quyidagi funksiyalardan foydalanish lozim.
1. htmlspecialchars — , … larni maxsus belgilashlarga o’tkazadi. Bu esa teglarni «ishlamasligiga» olib keladi.
2. strip_tags – HTML teglarni olib tashlaydi.
Yana bir xolat: link. Buni oldini olish

$c = preg_replace(«@(]*>.*)@iU», «$1$2$3»,$c);

Man asosan o’zim ishlatadigan yo’llarni ko’rsatib o’tdim, balki boshqa yo’llari ham bordir. Oson, tez va qulay bo’lgan.

Insonlar, ovqatni yemasdan turib, ovqat shirin emas ekan, manga yoqmadi demanglar. Oshpazlarga yomon ko’rinishingiz mumkin.

Manba:

Web Dasturlash
Ko’pchilikning fikricha PHP da xavfsizlikning oldi olinmagan ekan