SQL injection és paraméterezett lekérdezés
Miért veszélyes SQL-sztringet építeni felhasználói inputból, és hogyan választja szét a paraméterezett query az adatot az utasítástól?
Röviden
SQL injectionnél a nem megbízható adat a lekérdezés szintaxisának részévé válik. A biztonságos cél nem a „rossz karakterek” üldözése, hanem az, hogy a query szerkezete és a hozzá tartozó paraméterek külön csatornán maradjanak.
Mit jelent a sql injection és paraméterezett lekérdezés?
SQL injectionnél a nem megbízható adat a lekérdezés szintaxisának részévé válik. A biztonságos cél nem a „rossz karakterek” üldözése, hanem az, hogy a query szerkezete és a hozzá tartozó paraméterek külön csatornán maradjanak.
A lényeg vizuálisan
01
Használj paraméterezett lekérdezést vagy biztonságos query buildert.
02
Adatbázis-felhasználónak csak a szükséges jogosultságokat add.
03
Dinamikus oszlop- és táblaazonosítókhoz whitelistelt mapping kellhet.
04
A hibákból ne szivárogjon ki belső SQL vagy séma információ.
Hogyan működik a gyakorlatban?
A prepared statement vagy paraméterezett API előre meghatározza a lekérdezés szerkezetét, majd az értékeket adatként köti hozzá. ORM esetén is ellenőrizni kell, mely API-k paramétereznek és mely nyers query lehetőségek igényelnek extra figyelmet.
- Használj paraméterezett lekérdezést vagy biztonságos query buildert.
- Adatbázis-felhasználónak csak a szükséges jogosultságokat add.
- Dinamikus oszlop- és táblaazonosítókhoz whitelistelt mapping kellhet.
- A hibákból ne szivárogjon ki belső SQL vagy séma információ.
Paraméterezett lekérdezés
SQL / pszeudokód
SELECT id, email
FROM users
WHERE email = $1;
-- $1 értéke külön paraméterként érkezikGyakorlati fejlesztői szemlélet
A validáció hasznos üzleti szabály, de ne erre építsd az injection-védelmet. Egy email formátumának ellenőrzése és a SQL paraméterezése két külön kontroll.
Gyakori hibák és félreértések
- Regexszel escape-elni minden idézőjelet.
- Azt feltételezni, hogy ORM mellett injection lehetetlen.
- Túl erős adatbázis-szerepkört használni az alkalmazás minden műveletéhez.
Források és szabványok
A technikai részletekhez elsődleges szabványokat és karbantartott hivatalos dokumentációt használok. Frameworkök, böngészők és webes API-k idővel változhatnak, ezért implementálás előtt mindig ellenőrizd az aktuális dokumentációt is.
Kapcsolódó ByBence Academy