A PHP-s karakter formátum validálás nem elég védelem az SQL injenction ellen?
Most még csak tanulom a dolgot semmi nem megy élesben, de localhost-on csináltam egy bejelentkező rendszert MYSQLes adatbázissal, és hiába írom be, hogy "'OR''='" vagy vmi helytelennek jelzi és nem enged be
annyira nem másztam még bele, lehet csak pár idézőjel kérdése, és feltörném, vagy hogyan van ez?
Hogyha szűröm, az idézőjel és egyéb "nem-betű" karaktereket, az nem elég védelem?
Valszeg nem, de miért nem?
"Hogyha szűröm, az idézőjel és egyéb "nem-betű" karaktereket, az nem elég védelem?"
De elég lehetne...
Itt nézd meg hogy hogy is megy ez: [link]
preg_match("/^[a-zA-Z-0-9- ]+$/",$usname)
jelenleg ez van
de milyen esetben kell más fajta védelmet használni?
Miért nem szűrik le mindenhol a karakter típusokat, hogy ne lehessen hackelni?
Például mert ez nem mindenhol elég.
Tegyük fel, hogy valódi nevet is be akarsz kérni.
Jön a pasas A három testőrből, és frankón úgy hívják, hogy D'Artagnan. Megmondod, hogy változtasson nevet? Az olasz meg francia nevek tele vannak aposztróffal, ami az egyik legveszélyesebb karakter SQL injection szempontjából.
Vagy jönnek a dánok meg a lengyelek az áthúzott betűs neveikkel...
Nézz utána: PDO
Példa egy prepare (előkészített SQL-re):
$stmt = $dbh->prepare("SELECT * FROM tabla WHERE nev = ? AND email = ?");
$stmt->execute([$_POST['nev'], $_POST['email']]);
Oszt letudva. SQL injektorokat meg ő maga lekezeli.
Ezek már kész megoldások, csak használni kell. Jah igen: már a nyelvekben is beleépítették, és nem csak a PHP-ra érvényez ez.
PDO is támadható:
$var = "\xbf\x27 OR 1=1 /*";
$query = 'SELECT * FROM test WHERE name = ? LIMIT 1';
$stmt = $pdo->prepare($query);
$stmt->execute(array($var));
Hmm.. javították. :-)
Mármint a PHP 5.5 -ös verzióban már nem megy.
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!