A bevezetés sql-kód

Az SQL nedrenie, attól függően, hogy milyen adatbázis és bevezetése feltételek révén egy támadó tetszőleges lekérdezést az adatbázisban (például, hogy olvassa el a tartalmát minden asztalra, távolítsa el, változás, vagy add adatok), hogy képes legyen olvasni és / vagy írni a helyi fájlok és tetszőleges parancsokat a cél kiszolgálón.
SQL végrehajtási típusú támadás lehetséges oka a helytelen feldolgozását használt beviteli adatok SQL-lekérdezés.
Fejlesztő alkalmazásokat és dolgozik adatbázisokkal, tisztában kell lenniük a biztonsági réseket, és hogy ellenintézkedéseket SQL végrehajtás.

SQL injekciós támadás elv
Tegyük szerver szoftver, bemenő paraméter id, arra használja, hogy hozzon létre SQL-lekérdezés. Tekintsük ezt a PHP-script:

Így változik a bemeneti paraméterek hozzáadásával, hogy az SQL nyelvi konstrukciók változást okoz a logika SQL-lekérdezés (ebben a példában, ahelyett, hogy a hírek minden megadott azonosító az adatbázisban tárolt választják ki a hír, hiszen a kifejezés 1 = 1 mindig igaz).

A bevezetés a húr paraméterek
Tegyük szerver szoftver iránti kérelmet kap az adatok visszanyerését a hírekben SEARCH_TEXT opciót, akkor a következő SQL-lekérdezés (paraméterek megszökött idézetek itt):

De bevezetésével paraméter keresett_szöveg idézőjelet (amelyet a lekérdezés), akkor gyökeresen megváltoztatja a viselkedését az SQL-lekérdezést. Például, átadva a paraméter értéke keresett_szöveg) + és + (news_id_author = '1 hívjuk kérést végrehajtani:

Az Unió
SQL nyelv lehetővé teszi, hogy összekapcsolják az eredmények több lekérdezés segítségével UNION operátor. Ez ad a támadók jogosulatlan hozzáférést az adatokhoz.
Fontolja meg hírek script (ID hírek a megjeleníteni kívánt továbbítjuk az id paraméter):

Ha egy támadó át paraméterként id tervezés -1 UNION SELECT 1, felhasználónév, jelszó, 1. admin, hogy hatására a végrehajtását SQL-lekérdezés

Mivel hírek azonosító -1 nyilván nem létezik, az asztal, a hírek kiválasztott hangfelvételt, de csökkenni fog az eredmény bejegyzések jogosulatlan választott admin asztal kapott SQL injection.
Használata UNION + group_concat ()
Egyes esetekben a támadó indítson támadást, de nem tudta, hogy több mint egy oszlop. Abban az esetben, MySQL támadó használhatja a funkciót:

amely egyesíti több oszlopot egyetlen. Például egy példa a fenti függvény hívás:

Védő farok lekérdezés
Gyakran előfordul, hogy az SQL-lekérdezés érinti ez a biztonsági rés, amelynek a szerkezete bonyolulttá vagy zárja ki a szakszervezet. Például script

Ez keresztül továbbított szerkezet, amely pontosvesszővel, például 12; INSERT INTO admin (felhasználónév, jelszó) ÉRTÉKEK ( „Hacker”, „asztal”); A 2 csapat kerül végrehajtásra egy lekérdezés

és az asztal admin illegálisan hozzá felvétel Hacker.
A végrehajtás módszerei típusú támadás SQL-kódot
Keresés a szkriptek téve a támadásoknak
Ezen a ponton a támadó viselkedését vizsgálja a szerver script manipuláció bemeneti paraméterek kimutatására rendellenes viselkedést. Manipuláció történik minden lehetséges paraméterek:
Keresztül továbbított adatokat a POST és GET módszerek
Értékek [HTTP-Cookie]
Http_referer (a szkriptek)
AUTH_USER és AUTH_PASSWORD (használatával hitelesítés)
Általános szabály, hogy a manipuláció összege helyett a paramétereket egyetlen karakter (néha dupla vagy hátra) idézetek.
Rendellenes viselkedés olyan viselkedést, amely beérkezett oldalak előtt és után helyettesítési idézetek, különböző (és nem jelenik meg az oldalon rossz paraméter formátum).
A leggyakoribb példák abnormális viselkedés:
Egy üzenet jelenik meg a különböző hibák;
amikor kérés adatok (pl híreket vagy a termék lista) a kért adatok nem jelennek meg minden, bár az oldal jelenik meg
és így tovább. d. Vegyük észre, hogy vannak olyan esetek, amikor a hiba üzenetet, mert az adott oldal nem látható a böngésző, bár jelen a HTML-kódot.
Védelem a támadások ellen, mint amilyen az SQL-kód
Védelmet e típusú támadás kell, hogy alaposan szűrni a bemeneti paraméterek, amelyeket használni fognak a konstrukció az SQL-lekérdezést.
Szűréssel-paramétereket
Tegyük fel, hogy a kódot generál kérés (Pascal programozás), az alábbiak szerint:

Ahhoz, hogy a bevezetése a kód nem volt lehetséges, valamilyen DBMS beleértve a MySQL, meg kell idézett összes paramétereket tartalmaz. A paraméter helyére a jegyzéseket „aposztróf a \„backslash a \\ (ez az úgynevezett”szűrés speciális karakterek") Lehetséges, hogy egy ilyen kódot .:

szűrés lehet olyan, hogy a PHP:

Kapcsolódó cikkek