Autor Zpráva
swimmer01
Profil
Zdravím,

potřeboval bych, prosím, poradit, jak ochránit např. tento kód proti SQL Injection. Nejsem žádný profík.. Když jsem zkoušel sám na sebe zaútočit (podle návodů), abych si to mohl vyzkoušet, že ten útok fakt funguje, tak mi to napsalo "špatnej dotaz" a v databázi se samozřejmě nic nesmazalo..
Hledal jsem sice různě na internetu a našel několik ukázek jak se chránit.. jenže když nejsem ani schopnej sám na sebe zaútočit na tento nechráněnej kód, tak i kdybych aplikoval na ochranu něco z toho, co jsem našel, tak si neověřím, jestli to fakt chrání nebo ne.

<form action="injection.php">
    <br>
    zadej jméno
    <input type="text" name="klic">
    <input type="submit" value="OK" name="odeslano">
</form>

<?php
$pripojeni = @mysqli_connect("localhost", "user", "password", "databaze");

$klic=$_REQUEST['klic'];
$dotaz ="select * from uzivatele where jmeno = '$klic'";
 
$vysledek = mysqli_query($pripojeni, $dotaz)or die("špatný dotaz <br>$dotaz<br>".mysqli_error());

echo
"<table border=1><th>ID</th><th>jméno</th>";

  while ($row = mysqli_fetch_array($vysledek)) {
    echo"<tr><td>$row[0]</td><td>$row[1]</td></tr>";
}

mysqli_close($pripojeni); 

?>

Díky
juriad
Profil
$dotaz ="select * from uzivatele where jmeno = '" . mysqli_real_escape_string($pripojeni, $klic) . "'";
A neměl bys používat pole $_REQUEST - http://php.vrana.cz/problemy-pole-_request.php
snazimse
Profil
juriad:

A k čemu se to vlastně používá, dneska ten $_REQUEST? To je celé polé requestů, k čemu to je dobré? Když např, POST si předám přímo, nebo ,kdyby všechny tak v poli $_POST.
Keeehi
Profil
snazimse:
K čemu je dobré? Ještě jsem nenarazil na případ, kdy by bylo dobré nebo doonce nutné ho použít.
swimmer01
Profil
Díky :)

$_REQUEST nás učili ve škole, ale už neříkali, že to není úplně bezpečný. Nahradil jsem to metodou GET
snazimse
Profil
swimmer01, Keeehi:

No já bych chtěl právě vědět, kde to má nějaký přímý přínos, já jsem to taky právě nikdy nepoužil.
Ve škole ti neřeknou, takové věci.
Keeehi
Profil
snazimse:
No já bych chtěl právě vědět, kde to má nějaký přímý přínos
Ono to právě žádný přínos nemá. Všechny hodnoty obsažené v tomto poli se dají zjistit z jiných. Někdo by asi mohl argumentovat tím, že tahle nemusíš vědět z jakého zdroje to pochází a tedy kde to máš zjišťovat. Ve sutečnosti je to ale přesně naopak. Správně bys měl mít vždy přehled o tom, z jakého zdroje data pocházejí a pokud jsou od jinud, než by měli být, je to přinejmenším podezřelé.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: