1. BahhTeeUz (M) (4800) [off]
|
TXT |
59| 10 Jan 2019, 02:29
Har bir dasturlashni o'rganuvchilar uchun uning proyektining havfsizligi eng asosiy o'rinda bo'lishi aniq. Bu mavzuda imkon jiddiyroq qadar to'liq ma'lumot bermoqchiman. Bu esa menimcha UzNET ma'lumotlarida bo'ladi
Demak boshladim, xatolik turlari va ularni yopish:
1) Xatolik haqida foydalanuvchiga xabar berish
Bu jiddiy xatolik emas ammo bu orqali ham "kerakli" xatolikni topish mumkin.
Himoyasi:
.htaccess fayliga
php_flag error_reporting 0
Buyrug'ini yozish. Bu buyruq orqali xatolikni ko'rdatmaydi.
2) Sistema haqida foydalanuvchiga ochiq ma'lumot ko'rsatish
Bu ham jiddiy "qaramlik" emasku ammo sistema haqidagi ma'lumotni ham ko'rsatib berish "yaxshi amakilar" uchun qo'l kelishi mumkin. Bunga misol qilib, phpinfo.php fayli bo'la oladi. CMS yoki biror fremworkni aytmasak ham bo'ladi...
Himoya:
.htaccess fayliga
Order Deny,Allow
<FilesMatch <"\.php">
Deny from all
</FilesMatch>
Kodini kiritish orqali php fayllarni to'g'ridan-to'g'ri ko'rish yoki yuklab olishini yopishingiz mumkin.
3) Admin paneldagi oddiy parol
Bu ham jiddiy havf solmaydi ammo sistemadagi holatni bu orqali olish imkoniyati ko'proq.
4) Global o'zgaruvchilarni to'g'ri sozlamaslik
Bu endi jiddiy havflardan biri hisloblanadi. Ya'ni ichki sozlamalar orqali kerakli tomonlarni yopmaslik.
Himoya:
.htaccess fayliga
php_flag register_globals off
Kodini orqali global o'zgaruvchilarni o'zgarishini oldini olasiz.
5) PHP - Ineksiya
Bu haqida ko'p eshitganmiz ammo aniq ma'lumotga ega emas edik. Bu havfli holat
<?php
eval(), preg_replace(), require_once(), include_once(), include(), require(), create_function(), readfile(), dir(), fopen()
?>
Bu php funksiyalari orqali "yaxshi amakilar" sizning tashqi yo'naltirilgan so'rov orqali sizning sistemasidagi haqida ma'lumotga ega bo'lishi va yoki kerakli fayllaringizni olish imkoniga ham ega. Bu funksiyalardan imkon qadar foydalanmang va agar foydalanayotgan bo'lsangiz ham to'g'ri yozishga harakat qiling.
6) Fayl yuklnish vaqtida PHP Ineksiya
Bu turda foydalanuvchi fayl tanlaydigan va yuklayotgan vaqtidagi faylga ichki holatida uni ichiga kod kiritish hisoblanadi. Bu holatda, agar faylni tekshiruvlardan o'tkazmasdan serverga joylashga ruxsat bersangiz u holatda balkim, sizning global sozlamalaringizga o'zgarishlar haqidagi buyruqlar berilgan yoki shunga o'xshash havfli buyruq berilgan bo'lishi mumkin. Buni yo'qotish uchun siz faylni tekshirishni to'g'ri va to'liq amalga oshirishingiz kerak. Ya'ni, "moderatsiydan o'tmagunicha" degan qandaydur hayol emas, haqiqiy tekshiruv nazarda tutilmoqda.
7) e-mail ineksiya
Bu turda dasturlovchilar foydalanuvchiga xabarni to'g'ri va to'liq yetib borishi uchun chetdagi kutubxonalardan foydalangan holda amalga oshirishga harakat qiladi va u chetdagi kutubxona muallifi kodni o'zgartirgan holda saytni istagan kuyiga solishi mumkinligi haqida o'ylab ham ko'rmaydi...
8) SQL ineksiya
Bu tur haqida ham ko'p eshitganmiz ammo to'liq bilmaymiz. Bu usul orqali ma'lumotlar bazasidagi strukturani bilib olishi yoki istalgan holatda ko'rishi, saqlashi, o'zgartirishi, o'chirishi ham mumkin.
Bu holatga misol qilib:
<?php
mysql_query("SELECT * FROM `users` WHERE `id` = '".$_GET['id']."' LIMIT 1);
?>
Bu kodda oddiy qilib aytganda
$_GET so'rovini o'zgartirish mumkin, aytaylik
<?php
mysql_query("SELECT * FROM `users` WHERE `id` = '1; or select * ...' LIMIT 1);
?>
So'rovli orqali istaganini qila oladi.
9)
Qisqasi bu postga yana qo'shimcha yozib boraman. Sababi hozir yo'qotib qo'yishim mmkin shuncha yozganimni...