Raqamlar
Is_numeric (n); funktsiyasidan foydalaniladi, agar n parametri raqam bo'lsa, rost , aks holda noto'g'ri qiymatini qaytaradi .
Shuningdek, siz raqam qiymatini tekshira olmaysiz, lekin turni qo'lda bekor qilishingiz mumkin. Mana, $_GET[' id_news '] dan olingan $ id qiymatini butun songa (integer) qayta aniqlaydigan misol:
$id=(int)$_GET['id_news'];
Satrlar
Aksariyat SQL xakerliklari satrlarda "xavfli" tirnoq, apostrof va boshqa maxsus belgilar mavjudligi sababli sodir bo'ladi. Buning uchun har bir maxsus belgi oldiga qo'shilgan teskari chiziq (\) bilan $ str qatorini qaytaruvchi qo'shimcha chiziq ( $ str ); funktsiyasidan foydalanish kerak . Bu jarayon skrining deb ataladi.
$a="apostrofli matn misoli ' ";
aks-sado qiyshiq chiziqlar ($a); //chiqarish qiladi: apostrofli matn misoli \'
Bundan tashqari, SQL operatorlarida qo'llaniladigan qochish satrlari uchun maxsus yaratilgan ikkita funktsiya mavjud.Bular mysql_escape_string($str); va mysql_real_escape_string($str);.
Birinchisi, ma'lumotlar bazasiga ulanishni kodlashni hisobga olmaydi va uni chetlab o'tish mumkin, lekin ikkinchisi buni hisobga oladi va mutlaqo xavfsizdir. mysql_real_escape_string ($ str ); $ str qatorini quyidagi belgilarga teskari qiyshiq chiziq bilan qaytaradi: \x00, \n, \r, \, ', " va \x1a .
Sehrli iqtiboslar
Chiqarish operatsiyalari paytida tirnoqni avtomatik ravishda teskari chiziq (\) va tirnoq bilan almashtirish effekti . Ba'zi PHP konfiguratsiyalarida bu opsiya yoqilgan, ba'zilarida esa yo'q. Mysql_real_escape_string ($ str ); orqali ikki marta qochish va maʼlumotlardan qochish uchun avtomatik teskari chiziqni olib tashlashingiz kerak (agar sehrli tirnoq yoqilgan boʻlsa).
GET, POST yoki Cookie-lardan olingan ma'lumotlar uchun sehrli tirnoqlarning kiritilishini tekshirish get_magic_quotes_gpc () funktsiyasi orqali tashkil etiladi; (sehrli tirnoq yoqilgan bo'lsa, 1, o'chirilgan bo'lsa, 0 qaytaradi).
Agar sehrli tirnoqlar kiritilgan bo'lsa ( ya'ni , teskari chiziq qo'shilsa ) va bu tez-tez sodir bo'lsa, ularni olib tashlash kerak. Bu stripslashes ($ str ) funksiyasi orqali amalga oshiriladi; ( qo'shtirnoq va to'g'ridan-to'g'ri apostroflarda teskari chiziqsiz $
str qatorini qaytaradi ). DA qamoq olib keling kod bilan to'liq filmga moslashish chiziqlar uchun yozuvlar ichida DB
if(get_magic_quotes_gpc()==1)
{
$element_title=stripslashes(trim($_POST["element_title"]));
$element_text=stripslashes(trim($_POST["element_text"]));
$element_date=stripslashes(trim($_POST["element_date"]));
}
Else
{
$element_title=trim($_POST["element_title"]);
$element_text=trim($_POST["element_text"]);
$element_date=trim($_POST["element_date"]);
}
$element_title=mysql_real_escape_string($element_title);
$element_text=mysql_real_escape_string($element_text);
$element_date=mysql_real_escape_string($element_date);
Xulosa
Ushbu ishning maqsadi mysql kengaytmasini qayta tiklash bo'lmasa-da , muammo, tez-tez bo'lgani kabi, asbobda emas, balki uni ushlab turgan qo'llar bilan bog'liqligini ta'kidlamoqchiman. Va agar ularga erishishning maqsadlari va mexanizmlari haqida tushuncha mavjud bo'lsa, unda "eskirgan" vosita bilan siz natijani yomonlashtira olasiz.
Shu bois, men boshqa bir “din” o‘rniga boshqa bir “din” o‘tqazmaslikka, eskisini o‘rniga yangi usulni reklama qilishga harakat qildim, lekin men qanday maqsadga erishmoqchimiz, nima uchun va unga erishish uchun qanday imkoniyatlar borligini tushuntirishga harakat qildim. agar men ozgina bo'lsa ham muvaffaqiyatga erishgan bo'lsam, men vazifamni tugallangan deb hisoblayman.
Ushbu individual ishni bajarish natijasida quyidagi xulosalarga erishildi:
SQL injection bilan web sahifalarni xavfsizlik darajasini tekshirish, turli hil SQL injection so`rovlarni qo`llab ko`rish. Ma`lumotlar bazasida ushbu SQL injection hujumi amalga oshirilmaslik uchun kerakli amallarni bajarish. MySQL va PHP da SQL injection hujumlarini oldini olish bo`yicha takliflar ko`rib chiqildi. Eng asosiysi biron bir loyiha tayyorlayotganda ushbu loyihaning xavfsizlikka bo`lgan qarashlarni har tomonlama o`lab chiqish va loyihani tugatish.
http://hozir.org
|