PHP-ben SQL Injection elkerülése?
Sziasztok!
Eddig csak a regisztrációs formnál ügyeltem az sql injection kivédésére, de arra jöttem rá, hogy szerintem az összes olyan lekérdezésnél, ahol a felhasználó adhatja meg a paramétereket, meg kéne csinálnom sql injection ellenire.
Minden ilyen esetnél kéne, vagy csak bizonyos esetekben? Van valami gyors módszer, hogy ne kelljen mindenhol leellenőríztetnem, és hiba üzenetet kiíratnom?
Lehet, hogy félreértelmeztem az oldalt, de ez alapján egy insertes query 1 sor helyett, vagy 10 lenne. És ezt mindent egyes insertes querynél le kéne cserélnem.
Jól értelmeztem? Vagy van valami egyszerűbb megoldás?
Minden igényesebb, a biztonságra figyelő oldal így csinálja. 3 sor. És ezt a három sor-t nem fogod megúszni ha érdekel a biztonság. Tetszik vagy sem, ez van.
1. prepare
2. bind_param
3. execute
Nem kell feldolgozni a hibákat ha nem akarod:
$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)");
$stmt->bind_param("i", $id);
$stmt->execute();
Mint előttem is utaltak rá: két lehetőség adott:
- PDO prepared statement használata: [link]
- mysqli real_escape_string: [link]
Ezeken felül (szóval szerveroldalon, a MySQL parancsoknál mindenképp szűrnöd kell az előbb leírt módok valamelyikével!) akár kliensoldalon Javascripttel, akár szerveroldalon ellenőrizheted (reguláris kifejezésekkel) az űrlapon megadott értékeket és visszajelezheted a felhasználó felé.
Neked kéne ismerned a saját tábláidat és lekérdezéseidet..
Itt leírják milyen fajta sql injection-ök léteznek és miért működnek:
Paraméteres lekérdezésnél nem létezik sql injection, real escape stingnél pedig ha létezik is, biztosan nem publikus és nem egyszerű használni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!