Bu maqola PHP-da zaif solishtirish (==) dan foydalanish bilan bog'liq bo'lishi mumkin bo'lgan zaifliklarga bag'ishlangan. Qattiq solishtirishdan (===) farqli o'laroq, zaif solishtirish ma'lumotlar turlarini hisobga olmaydi va kutilmagan natijalarga olib kelishi mumkin, bu kodni hujumlarga nisbatan zaif qiladi.
PHP Loose Comparison (PHP-dagi zaif solishtirish)
Zaif solishtirish ikkita qiymat == operatori bilan taqqoslanganda sodir bo'ladi, bu ma'lumotlar turlarini tekshirmaydi. PHP taqqoslashdan oldin taqqoslanadigan qiymatlarni umumiy turga keltirishga harakat qiladi, bu esa kutilmagan natijalarga olib kelishi mumkin. Masalan, 'string' qatori true bilan taqqoslanganda true ga teng deb hisoblanadi.
Xavfsiz bo'lmagan avtorizatsiya tizimi:
Login va parolni tekshirish misolida, xaker true qiymatlarini o'zgartirishi mumkin, bu noto'g'ri ma'lumotlar bilan ham muvaffaqiyatli avtorizatsiyaga olib keladi.
Switch yordamida xavfsiz bo'lmagan avtorizatsiya:
Bu misolda xaker $_POST['user_role'] qiymatini true sifatida qo'llash orqali administrator huquqlariga ega bo'lishi mumkin, chunki switch-case ham zaif solishtirishdan foydalanadi.
Zaifliklarni kamaytirish
Bunday muammolardan qochish uchun, qiymat va ma'lumotlar turini tekshiradigan qattiq solishtirish (===) dan foydalanish tavsiya etiladi. Shuningdek, PHP 8.0 dan boshlab, switch kabi ishlaydigan, ammo qattiq solishtirishdan foydalanadigan match tuzilmasidan foydalanish mumkin, bu kodni yanada xavfsiz qiladi.
@uzdevid
Post #337
2.57K
- 👍 5
- 🔥 2
- ❤ 1
- 👏 1