Tartalomjegyzék:
Meghatározás - Mit jelent az SQL befecskendezés?
Az SQL-befecskendezés egy számítógépes támadás, amely során a rosszindulatú kódok be vannak ágyazva egy rosszul megtervezett alkalmazásba, majd átkerülnek a háttér-adatbázisba. A rosszindulatú adatok ezután adatbázis-lekérdezés eredményeket vagy olyan műveleteket hoznak létre, amelyeket soha nem kellett volna végrehajtani.
A Techopedia magyarázza az SQL befecskendezést
Vizsgáljuk meg az SQL befecskendezésének egy példáját:
A bank műveleteit futtató alkalmazás olyan menüket tartalmaz, amelyek felhasználhatók ügyféladatok keresésére adatpontok, például az ügyfél társadalombiztosítási száma alapján. A háttérben az alkalmazás felhív egy SQL lekérdezést, amely fut az adatbázisban a megadott keresési értékek átadásával, az alábbiak szerint:
VÁLASSZON ügyfélnevet, telefont, címet, születési dátumot WHERE social_sec_no = 23425
Ebben a példafájlban a felhasználó beírja a 23425 értéket az alkalmazás menüablakába, és kéri a felhasználót, hogy adja meg a társadalombiztosítási számot. Ezután a felhasználó által megadott érték felhasználásával SQL lekérdezés fut az adatbázisban.
Az SQL ismeretekkel rendelkező felhasználó megértheti az alkalmazást, és ahelyett, hogy egyetlen értéket írna be, amikor a társadalombiztosítási számot kéri, írja be a „23425 vagy 1 = 1” karakterláncot, amelyet az alábbiak szerint továbbítanak az adatbázishoz:
VÁLASSZON ügyfélnevet, telefont, címet, születési dátumot WHERE social_sec_no = 23425 vagy 1 = 1
A WHERE záradék fontos, mivel bevezet egy sebezhetőséget. Az adatbázisban az 1 = 1 feltétel mindig igaz, és mivel a lekérdezés az ügyfél társadalombiztosítási számának részleteinek megadására került megadásra (23425) vagy ahol 1 = 1, akkor a lekérdezés a táblázat összes sorát adja vissza, amely nem volt a eredeti szándék.
A fenti SQL befecskendezési támadás példa egyszerű, de megmutatja, hogyan lehet egy biztonsági rést kihasználni az alkalmazás becsapására háttér-adatbázis lekérdezés vagy parancs futtatására.
Az SQL befecskendezés támadásait a megfelelő alkalmazástervezés biztosításával enyhíthetjük, különösen azokban a modulokban, amelyek felhasználói beadást igényelnek adatbázis-lekérdezések vagy parancsok futtatásához. A fenti példában az alkalmazást úgy lehet megváltoztatni, hogy csak egy numerikus értéket fogadjon el.
