stripchar - bemeneti fertőtlenítés - paraméteres lekérdezések

Miért nem blokkolta Stripchar az injekciós támadást?

Ha csíkos szén a felhasználói bevitel tisztításához nincs egyedül. Sok fejlesztő erre a fajta módszerre támaszkodik bemeneti fertőtlenítés a befecskendezési kísérletek blokkolására. Első pillantásra logikusnak tűnik, távolítsa el a veszélyes karaktereket, és a hasznos adat eltűnik. Ez a megközelítés azonban hamis biztonságérzetet ad. Valójában a támadók megkerülhetik az egyszerű szűrőket, mint például csíkos szén segítségével obfuszkált hasznos adatok, kódolások, vagy okos kontextusváltás. Ezért az okos fejlesztők nem állnak meg itt. Ehelyett a következőket használják paraméterezett lekérdezések, amelyek megakadályozzák az injekciós támadásokat a gyökérnél.

Ebben a bejegyzésben megtudhatod, miért csíkos szén valós helyzetekben kudarcot vallanak, hogyan használják ki a támadók ezeket a szűrőket, és milyen biztonságos alternatívák működnek valójában. Végigmegyünk kódpéldákon, bemutatjuk a gyakori megkerülési technikákat, és elmagyarázzuk, hogyan bemeneti fertőtlenítés mindig szerkezeti védelemmel kell párosítani, mint például paraméterezett lekérdezések, különben sebezhető maradsz.

Mit csíkos szén Valójában igen (és nem igen)

Sok fejlesztő használja stripchar vagy hasonló függvényeket használ a nem biztonságos karakterek eltávolítására a felhasználói bevitelből. Általában eltávolítja az írásjeleket, a speciális szimbólumokat vagy bármit, ami nem alfanumerikus. Elsőre úgy hangzik, mint bemeneti fertőtlenítésde ez nem igazi védelem.

Nézzük meg részletesebben. Egy ilyen függvény:

eltávolítja a karaktereket, mint például ', "vagy ;Tehát, ha beírod:

Ez lesz belőle:

Még ha a felhasználói bevitel tisztának is tűnik, a támadók továbbra is képesek SQL-payloadokat befecskendezni pusztán logika segítségével, különösen akkor, ha az alkalmazás karakterlánc-összefűzéssel építi fel a lekérdezéseket. Az SQL-befecskendezés valódi megakadályozása érdekébenparaméteres lekérdezéseket és kontextusérzékeny bemenetkezelést kell használnia. Karakterszűrők, mint például a stripchar() egyszerűen nem elegendőek.

Persze, a csupaszított bemenet első pillantásra biztonságosabbnak tűnhet. Ez a megközelítés azonban nem semlegesíti a rosszindulatú logikát, csak megváltoztatja a megírását. Valójában a támadók gyakran kihasználják ezt a lehetőséget a hasznos adatok kódolásával, szóközök beszúrásával vagy az eltávolított karakterek stratégiai használatával a szűrő teljes megkerülésére.

Kívül, csíkos szén hiányzik belőle a kritikus kontextus. Nem tudja, hogy a bemenet egy adatbázisba, egy shellbe vagy egy böngészőbe tart-e. Ez azt jelenti, hogy nem tudja alkalmazni a megfelelő escape-kódolást vagy kódolást. A bemenet fertőtlenítése a cél ismerete nélkül olyan, mint a HTML escape-kódolása, miközben a valódi fenyegetés fennáll. SQLi.

A végén, csíkos szén  Nem értelmez és nem biztosít semmit, csak szerkeszti a karakterláncokat. A szerkesztés pedig nem biztonság. Ha valódi védelmet szeretnél, használj strukturált, validált és paraméterezett lekérdezéseket. Pont.

A különbség jobb megértése érdekében a stripchar a paraméteres lekérdezésekkel összehasonlítva a következőképpen működik:

Stripchar vs. paraméteres lekérdezések: Melyik védi valójában a kódodat?

Jellemző stripchar() Paraméterezett lekérdezések
Védelmi szint Alapvető karakterlánc-tisztítás. Könnyen megkerülhető kódolással vagy logikai trükkökkel. Erős védelem az SQL-injekció minden formája ellen.
Kontextus tudatosság Nem ismeri a kontextust (SQL, HTML, shell, stb.). Mindenhol ugyanazt a szabályt alkalmazza. Teljesen kontextusérzékeny. Minden környezethez megfelelő escape-karaktert használ.
Fejlesztői erőfeszítés Gyorsan beüzemelhető, de hosszú távú használatra megbízhatatlan. Megfelelő integrációt igényel, de robusztus és jövőbiztos.
Megkerülő ellenállás Alacsony – a támadók könnyen alkalmazkodnak szóközök, kódolás vagy logika használatával. Magas – elkülöníti a kódot az adatoktól, és megbízhatóan blokkolja az injektálást.
Biztonsági bizalom Hamis biztonságérzet – elrejtheti a problémát anélkül, hogy megoldaná. Megbízható iparág standard a biztonságos lekérdezésvégrehajtáshoz.

Hogyan kerülik meg a támadók a bemeneti fertőtlenítést?

Így néz ki egy tipikus sebezhető folyamat, amikor a fejlesztők a következőkre támaszkodnak: csíkos szén bemeneti fertőtlenítéshez:

stripchar - bemeneti fertőtlenítés - paraméteres lekérdezések

A támadóknak nem kell feltörniük a szűrőidet, elég, ha menj körbe őketAmikor a fejlesztők a következőkre támaszkodnak: csíkos szén a beviteli kód fertőtlenítése érdekében gyakran feltételezik, hogy az idézőjelek vagy pontosvesszők eltávolítása blokkolja az injektálási kísérleteket. A támadók azonban gyorsan alkalmazkodnak. obfuszkált hasznos adatok amelyek átcsúsznak a reguláris kifejezéseken alapuló szűrőkön, különösen akkor, ha ezek a szűrők nem rendelkeznek kontextussal.

Például tegyük fel, hogy megpróbálod így fertőtleníteni a bemenetet:

Még akkor is, ha a felhasználó nem tud klasszikust beküldeni ' OR 1=1 --, használhatnak Unicode trükköket, karakterlánc-összefűzést vagy hibás szintaxist, amelyek továbbra is futnak. Az ilyen hasznos adatok gyakran működnek:

vagy:

Ha a függvényed eltávolítja a nem szóbeli karaktereket, akkor előfordulhat, hogy véletlenül rekonstruál egy érvényes SQL parancsotAmi még rosszabb, a támadók olyan módon is kódolhatják az értékeket, amelyek átmennek a szűrőn, de a célrendszer dekódolja azokat.

Az SQL injekción kívül csíkos szén más kontextusokban is hibát jelez, például shell parancsok, fájlelérési utak vagy akár JavaScript végrehajtás esetén. Mivel nem tudja, hogy a bemenet hol lesz felhasználva, nem tud megfelelő escape-karaktereket vagy validációt alkalmazni.

Ennek eredményeként, bemeneti fertőtlenítés ahol csíkos szén könnyű megkerülni. Az igazi biztonság a következőből fakad: kontextusfüggő vezérlők, Különösen paraméterezett lekérdezések amelyek teljesen megakadályozzák a logikai injekciót.

Miért érdemes paraméteres lekérdezéseket használni?

Ha tényleg meg akarod állítani az injekciós támadásokat, akkor ezt kell tenned ne építsünk lekérdezéseket karakterláncokkal. Ahol paraméterezett lekérdezések gyere be. Ellentétben csíkos szén, nem szűrnek, hanem külön kód az adatoktól a motor szintjén.

Nézzük újra a hibás lekérdezést:

Ez veszélyes, mert a bemenet közvetlenül az SQL-be ​​kerül. Még karaktercsupaszítással is egy olyan karakterláncot építesz, amelyet visszaélhetnek. Ehelyett használj egy paraméteres lekérdezést, mint ez:

Itt az adatbázis-illesztőprogram tudja, hogy userInput adat, nem futtatható kódAutomatikusan kilép belőle és blokkolja az injektálást, még akkor is, ha a bemenet idézőjeleket, pontosvesszőket vagy hex kódolású hasznos adatokat tartalmaz.

Pythonban:

PHP-ben PDO-val:

Mindezen példák alapján, paraméterezett lekérdezések megakadályozhatja az injekció beadását anélkül, hogy kitalálnia kellene, mely karakterek lehetnek veszélyesek. Nem kell csíkos char, strukturált, kontextus-érzékeny lekérdezésszerkesztésre van szükséged.

Ezenkívül ez a technika blokkolja a zavaros hasznos adatokat, az Unicode trükköket és a kódolási megkerüléseket, ugyanazokat az elkerülő mintákat, amelyek a következőben találhatók: XSS sebezhetőségekAz olyan eszközök, mint a Xygeni, korán felismerik ezeket a fenyegetéseket SAST elemzés.

Röviden, a valódi védelem nem szűrőkre támaszkodik. Protokollokra, megbízható API-kra és teljes kontextusra. Ha keretrendszereket vagy dinamikus szolgáltatásbefecskendezést használsz, légy tudatában annak, hogyan terjednek a bemenetek a kódbázisodban. Biztonságos függőségbefecskendezés biztosítja, hogy még az összetett folyamatok sem nyitnak meg új támadási felületeket.

Ne támaszkodj rá csíkos szénHasználd az Xygenit a valódi védelem megerősítéséhez

Még ha használod is paraméterezett lekérdezések, nincs garancia arra, hogy a teljes kódbázisod ugyanazt követi standardA korábbi logika, a harmadik féltől származó szkriptek vagy a PR-ben figyelmen kívül hagyott sorok továbbra is injekciózási kockázatokat okozhatnak. Pontosan itt segít a Xygeni.

A Xygeni beolvassa a forráskódodat, pull requestsés CI pipelines elkapni:

  • Lekérdezési karakterláncok, amelyek összefűzéssel építik fel az SQL-t
  • Gyenge vagy saját fejlesztésű szűrők, mint például csíkos szén
  • Gyanús logika, amely egyezik az ismert, obfuszkált hasznos adatokkal

Nem kell minden sort átfésülnöd. A Xygeni korán jelzi a nem biztonságos mintákat, és alkalmazza őket. Automatikus javítás ahol lehetséges, és testreszabható módon blokkolhatja a kockázatos összeolvadásokat Guardrails.

Röviden, A Xygeni biztosítja, hogy a paraméteres lekérdezések ne csak ajánlott gyakorlatok legyenek, hanem nagy léptékben is érvényesüljenek. Nincs több találgatás. Nincsenek kihagyott szűrők. Csak valódi védelem.

Szeretnéd látni, hogyan találja meg a Xygeni a nem biztonságos lekérdezéseket a kódodban?

Ingyenes próbaverzió! Nincs szükség hitelkártyára, teljes átláthatóság az első szkenneléstől kezdve.

Főbb tudnivalók: Mire kell emlékezni csíkos szén és az injekciózás kockázatai

  • csíkos szén nem biztonsági funkció – karaktereket távolít el, nem kockázatot.
  • A bemeneti fertőtlenítés nem elég amikor karakterlánc-összefűzéssel építesz lekérdezéseket.
  • A paraméteres lekérdezések jelentik a helyes védelmet, és minden modern nyelv vagy keretrendszer támogatja őket.
  • A homályosított hasznos adatok átcsúszhatnak a szűrőkön, különösen, ha kódolási trükkökről van szó.
  • Statikus analízis (SAST) az eszközök megragadják azt, amit az emberek nem vesznek észre, beleértve a korábbi kódban megbúvó nem biztonságos mintákat is.
  • A Xygeni automatizálja az észlelést, a priorizálást és a korrekciót is így a csapatod a funkciók írására koncentrálhat, ahelyett, hogy a sebezhetőségeket kergetné.

Konklúzió: Ne bízz a szűrőkben. Biztonságos tervezés.

Olyan funkciókra támaszkodva, mint például csíkos szén Gyors megoldásnak tűnhet, de hamis biztonságérzetet keltenek. A támadók gyorsabban fejlődnek, mint a karakterlánc-szűrők. Az injekciós támadások megállításának egyetlen megbízható módja a biztonságos kód tervezése, és ennek a tervezésnek a betartatása mindenhol.

Az olyan eszközök, mint a Xygeni, segítenek ebben automatikusan. pull request nak nek pipeline, észreveszik azt, amit a szűrőid nem, és kijavítják, mielőtt gyártásba kerülne.

sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal