Siz foydalanmoqchi bo'lsangiz, stripchar Foydalanuvchi kiritishini tozalash uchun siz yolg'iz emassiz. Ko'pgina ishlab chiquvchilar ushbu turdagi ma'lumotlarga tayanadilar kirish sanitariyasi in'ektsiya urinishlarini blokirovka qilish uchun. Bir qarashda, xavfli belgilarni olib tashlash mantiqan to'g'ri keladi va foydali yuk yo'qoladi. Biroq, bu yondashuv noto'g'ri xavfsizlik hissini beradi. Aslida, tajovuzkorlar oddiy filtrlarni chetlab o'tishlari mumkin, masalan stripchar foydalanish chalkash yuklamalar, kodlashlar yoki aqlli kontekstni almashtirish. Shuning uchun aqlli ishlab chiquvchilar shu bilan to'xtab qolishmaydi. Buning o'rniga, ular foydalanadilar parametrlangan so'rovlar, bu esa ildizga in'ektsiya hujumlarining oldini oladi.
Ushbu postda siz nima uchun ekanligini bilib olasiz stripchar real hayotdagi stsenariylarda muvaffaqiyatsizliklar, tajovuzkorlar ushbu filtrlarni qanday suiiste'mol qilishlari va qanday xavfsiz alternativalar aslida ishlashi. Biz kod misollarini ko'rib chiqamiz, keng tarqalgan chetlab o'tish usullarini ko'rsatamiz va qanday qilib buni tushuntiramiz. kirish sanitariyasi har doim strukturaviy himoya kabi narsalar bilan birlashtirilishi kerak parametrlangan so'rovlar, aks holda siz zaif bo'lib qolasiz.
Nima stripchar Aslida qiladi (va qilmaydi)
Ko'pgina ishlab chiquvchilar foydalanadilar stripchar yoki foydalanuvchi kiritgan ma'lumotlardan xavfli belgilarni olib tashlash uchun shunga o'xshash funksiyalar. Odatda, u tinish belgilari, maxsus belgilar yoki harf-raqam bo'lmagan har qanday narsani olib tashlaydi. Avvaliga bu shunday eshitiladi kirish sanitariyasi, lekin bu haqiqiy himoya emas.
Keling, uni batafsil ko'rib chiqaylik. Quyidagi kabi funksiya:
kabi belgilarni olib tashlaydi ', "yoki ;Shunday qilib, agar siz kirsangiz:
Bu quyidagicha bo'ladi:
Foydalanuvchi kiritishi toza ko'rinsa ham, tajovuzkorlar faqat mantiqdan foydalanib, SQL yuklamalarini kiritishlari mumkin, ayniqsa dastur so'rovlarni satrlarni birlashtirish orqali tuzganda. SQL in'ektsiyasini chindan ham oldini olish uchun, siz parametrlangan so'rovlar va kontekstga asoslangan kiritishni qayta ishlashdan foydalanishingiz kerak. Belgilar filtrlari kabi stripchar() shunchaki yetarli emas.
Albatta, bir qarashda olib tashlangan ma'lumotlar xavfsizroq ko'rinishi mumkin. Biroq, bu yondashuv zararli mantiqni zararsizlantirmaydi, balki uning yozilish usulini o'zgartiradi. Aslida, tajovuzkorlar ko'pincha bundan foydali yuklamalarni kodlash, bo'sh joy qo'shish yoki filtringizni butunlay chetlab o'tish uchun olib tashlangan belgilardan strategik ravishda foydalanish orqali foydalanadilar.
Bundan tashqari, stripchar muhim kontekstga ega emas. U kirish ma'lumotlar bazasi, qobiq yoki brauzerga yo'naltirilganligini bilmaydi. Bu shuni anglatadiki, u to'g'ri qochish yoki kodlashni qo'llay olmaydi. Manzilni bilmasdan kirishni dezinfektsiya qilish HTMLdan qochishga o'xshaydi, haqiqiy tahdid esa SQLi.
Oxirida, stripchar hech narsani sharhlamaydi yoki himoya qilmaydi, shunchaki satrlarni tahrirlaydi. Va tahrirlash xavfsizlik emas. Agar siz haqiqiy himoyani xohlasangiz, tuzilgan, tasdiqlangan va parametrlangan so'rovlardan foydalaning. Nuqta.
Farqni aniqroq qilish uchun, stripchar parametrlangan so'rovlar bilan yonma-yon qanday taqqoslanadi:
Stripchar va Parametrlangan So'rovlar: Qaysi biri aslida kodingizni himoya qiladi?
| xususiyati | stripchar() | Parametrlangan so'rovlar |
|---|---|---|
| Himoya darajasi | Oddiy satrlarni tozalash. Kodlash yoki mantiqiy fokuslar bilan osongina chetlab o'tiladi. | SQL in'ektsiyasining barcha shakllaridan kuchli himoya. |
| Kontekstdan xabardorlik | Kontekstga ko'r (SQL, HTML, shell va boshqalar). Hamma joyda bir xil qoidani qo'llaydi. | Kontekstdan to'liq xabardor. Har bir muhit uchun to'g'ri qochishdan foydalanadi. |
| Dasturchi sa'y-harakatlari | Tez qo'llaniladi, ammo uzoq muddatli foydalanish uchun ishonchsiz. | To'g'ri integratsiyani talab qiladi, ammo mustahkam va kelajakka mos. |
| Aylanib o'tishga qarshilik | Kam — tajovuzkorlar bo'sh joy, kodlash yoki mantiq yordamida osongina moslashadi. | Yuqori — kodni ma'lumotlardan ajratadi va in'ektsiyani ishonchli tarzda bloklaydi. |
| Xavfsizlikka ishonch | Soxta xavfsizlik hissi — muammoni hal qilmasdan uni yashirishi mumkin. | Ishonchli sanoat standard xavfsiz so'rovni bajarish uchun. |
Hujumchilar kirishni sanitarizatsiya qilishni qanday chetlab o'tishadi
Ishlab chiquvchilar tayanganida odatiy zaif oqim shunday ko'rinadi stripchar kirishni sanitarizatsiya qilish uchun:
Hujumchilar sizning filtrlaringizni buzishlari shart emas, ular shunchaki kerak ularning atrofida aylanib chiqingIshlab chiquvchilar tayanganlarida stripchar Kirishni sanitarizatsiya qilish uchun ular ko'pincha qo'shtirnoq yoki nuqta-vergul kabi belgilarni olib tashlash kiritish urinishlarini bloklaydi deb taxmin qilishadi. Biroq, tajovuzkorlar tezda moslashadilar. Ular hiyla ishlatadilar chalkash yuklamalar ayniqsa, bu filtrlarda kontekst yo'q bo'lganda, regex asosidagi filtrlardan o'tib ketadi.
Masalan, aytaylik, siz kirishni quyidagicha sanitarizatsiya qilishga harakat qilyapsiz:
Foydalanuvchi klassik asarni taqdim eta olmasa ham ' OR 1=1 --, ular Unicode fokuslaridan, satrlarni birlashtirishdan yoki hali ham ishlaydigan buzilgan sintaksisdan foydalanishlari mumkin. Bunday foydali yuklamalar ko'pincha ishlaydi:
yoki:
Agar funktsiyangiz so'z bo'lmagan belgilarni olib tashlasa, siz buni qilishingiz mumkin tasodifan haqiqiy SQL buyrug'ini qayta tiklashEng yomoni, tajovuzkorlar qiymatlarni sizning filtringizdan o'tadigan, ammo maqsadli tizim tomonidan dekodlanadigan usullar bilan kodlashlari mumkin.
SQL in'ektsiyasidan tashqari, stripchar boshqa kontekstlarda ham, masalan, shell buyruqlarida, fayl yo'llarida yoki hatto JavaScript bajarilishida ham muvaffaqiyatsizlikka uchraydi. Kiritilgan ma'lumotlar qayerda ishlatilishini bilmagani uchun, u to'g'ri escape yoki validatsiyani qo'llay olmaydi.
Natijada, kirish sanitariyasi bilan stripchar chetlab o'tish oson. Haqiqiy xavfsizlik quyidagilardan kelib chiqadi kontekstga asoslangan boshqaruv elementlari, ayniqsa parametrlangan so'rovlar mantiqiy in'ektsiyani butunlay oldini oladi.
Nima uchun buning o'rniga parametrlangan so'rovlardan foydalanishingiz kerak
Agar siz in'ektsiya hujumlarini haqiqatan ham to'xtatmoqchi bo'lsangiz, sizga kerak satrlar bilan so'rovlar yaratishni to'xtating. Bu yerda parametrlangan so'rovlar Kiring. Undan farqli o'laroq stripchar, ular filtrlamaydi, ular kodni ma'lumotlardan ajratish dvigatel darajasida.
Keling, buzilgan so'rovni qayta ko'rib chiqaylik:
Bu xavfli, chunki kirish ma'lumotlari to'g'ridan-to'g'ri SQLga kiritiladi. Belgilarni olib tashlash bilan ham, siz hali ham noto'g'ri ishlatilishi mumkin bo'lgan satr yaratmoqdasiz. Buning o'rniga, quyidagi kabi parametrlangan so'rovdan foydalaning:
Bu yerda ma'lumotlar bazasi drayveri buni biladi userInput ma'lumotlar, bajarilmaydigan kodU avtomatik ravishda undan qochadi va kiritishni bloklaydi, hatto kiritishda qo'shtirnoq, nuqta-vergul yoki o'n oltilik kodlangan foydali yuklamalar bo'lsa ham.
Pythonda:
PHP da PDO bilan:
Bu misollarning barchasida, parametrlangan so'rovlar Qaysi belgilar xavfli bo'lishi mumkinligini taxmin qilmasdan in'ektsiyani oldini oling. Sizga kerak emas stripchar, Sizga strukturaviy, kontekstga asoslangan so'rovlar tuzilishi kerak.
Bundan tashqari, ushbu usul chalkash yuklamalarni, Unicode fokuslarini va kodlash chetlab o'tishlarini bloklaydi, xuddi shu qochish naqshlari XSS zaifliklariXygeni kabi vositalar bu tahdidlarni erta aniqlashga yordam beradi. SAST tahlil.
Xulosa qilib aytganda, haqiqiy himoya filtrlarga tayanmaydi. Ular protokollarga, ishonchli APIlarga va to'liq kontekstga tayanadi. Agar siz freymvorklar yoki dinamik xizmat in'ektsiyasidan foydalansangiz, kirishlar kod bazangiz orqali qanday tarqalishini yodda tuting. Xavfsiz qaramlik in'ektsiyasi hatto murakkab oqimlar ham yangi hujum yuzalarini ochmasligini ta'minlaydi.
Ishonmang stripcharHaqiqiy himoyani ta'minlash uchun Xygeni dan foydalaning
Agar siz foydalansangiz ham parametrlangan so'rovlar, butun kod bazangiz bir xil amal qilishiga kafolat yo'q standardEskirgan mantiq, uchinchi tomon skriptlari yoki PRdagi e'tibordan chetda qolgan satrlar hali ham in'ektsiya xavfini keltirib chiqarishi mumkin. Xygeni aynan shu yerda yordam beradi.
Xygeni sizning manba kodingizni skanerlaydi, pull requestsva CI pipelines ni ushlash uchun:
- SQLni konkatenatsiya bilan yaratadigan so'rov satrlari
- Zaif yoki mahalliy filtrlar kabi stripchar
- Ma'lum bo'lgan chalkash yuklamalarga mos keladigan shubhali mantiq
Har bir qatorni ko'rib chiqishingiz shart emas. Xygeni xavfli naqshlarni erta belgilaydi, qo'llaniladi Avtomatik tuzatish iloji bo'lsa va sozlanishi mumkin bo'lgan xavfli qo'shilishni bloklashi mumkin Guardrails.
Qisqasi, Xygeni parametrlangan so'rovlar shunchaki eng yaxshi amaliyot emasligini, balki ular keng miqyosda amalga oshirilishini ta'minlaydi. Endi taxminlar yo'q. Filtrlarni o'tkazib yuborish yo'q. Shunchaki haqiqiy himoya.
Xygeni kodingizda xavfli so'rovlarni qanday topishini ko'rishni xohlaysizmi?
Asosiy xulosalar: nimani yodda tutish kerak stripchar va in'ektsiya xavflari
- stripchar xavfsizlik funksiyasi emas — bu xavfni emas, balki personajlarni olib tashlaydi.
- Kirish dezinfektsiyasi yetarli emas satrlarni birlashtirish bilan so'rovlar yaratayotganingizda.
- Parametrlangan so'rovlar to'g'ri himoya hisoblanadiva har bir zamonaviy til yoki tizim ularni qo'llab-quvvatlaydi.
- Noaniq yuklamalar filtrlardan o'tib ketishi mumkin, ayniqsa kodlash fokuslari ishtirok etsa.
- Statik tahlil (SAST) asboblar odamlar o'tkazib yuborgan narsalarni ushlaydi, jumladan, eski kodda yashiringan xavfli naqshlar.
- Xygeni aniqlash, ustuvorlik berish va hatto tuzatishni avtomatlashtiradi shuning uchun jamoangiz zaifliklarni ta'qib qilish emas, balki yozish xususiyatlariga e'tibor qaratishi mumkin.
Xulosa: Filtrlarga ishonmang. Dizayn orqali himoyalangan.
Kabi funktsiyalarga tayanish stripchar tezkor yechimdek tuyulishi mumkin, ammo ular noto'g'ri xavfsizlik hissini yaratadi. Hujumchilar satr filtrlariga qaraganda tezroq rivojlanadi. Inyeksiya hujumlarini to'xtatishning yagona ishonchli usuli - bu dizayn bo'yicha xavfsiz kod yozish va bu dizaynni hamma joyda qo'llashdir.
Xygeni kabi vositalar sizga buni avtomatik ravishda bajarishga yordam beradi. pull request uchun pipeline, ular sizning filtrlaringiz ushlay olmaydigan narsani ushlaydi va ishlab chiqarishga yetib bormasdan oldin tuzatadi.




