Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP a MySQL - zabránění SQL injection

Zdravíčko,

potřeboval bych poradit, jak zabránit SQL injection.

Zatím to mám napsané "škaredě", takto:


$datetime = $_POST['datum'];
 $sql = "INSERT INTO tabulka (datumacas) VALUES ('$datetime')";

A podobně nezabezpečeně edituji data:


 $datetime = $_POST['datum'];
 $sql = "UPDATE tabulka SET datumacas = '$datetime'";

Existuje nějaký jednoduchý způsob, aniž bych to musel nějak notně celé přepisovat? :-)

Díky

Předmět Autor Datum
https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php
MaSo 03.12.2019 21:49
MaSo
Obecně na téma validace a sanitizace: https://www.w3schools.com/php/php_filter.asp konkrétně datum:…
touchwood 03.12.2019 21:51
touchwood
No :-) Ten příspěvek od MASO už byl přímo červený (navštívený). Asi to budu muset hasit takhle, co…
Flash_Gordon 03.12.2019 21:53
Flash_Gordon
Nebo ještě se zeptám takhle, co když si napíšu tuhle funkci: function BlockSQLInjection($str) { ret…
Flash_Gordon 03.12.2019 22:02
Flash_Gordon
Přiznám se, že funkci vůbec nerozumím. Mění apostrof za apostrof a uvozovku za její HTML entitu? Kaž… poslední
hynajs 04.12.2019 09:07
hynajs

No :-)

Ten příspěvek od MASO už byl přímo červený (navštívený).

Asi to budu muset hasit takhle, co?


$stmt=$conn->prepare(INSERT INTO MyGuests(firstname,lastname,email)VALUES(?,?,?)");
$stmt->bind_param("sss",$firstname,$lastname,$email);
//set paramters and execute
$firstname="John";
$lastname="Doe";
$email="john@example.com";
$stmt->execute();

Nebo ještě se zeptám takhle, co když si napíšu tuhle funkci:

function BlockSQLInjection($str)
{
return str_replace(array("'",""","'",'"'),array("'","""'",""",$str));
}

a následně budu používat:

$userName=BlockSQLInjection($_POST['userName']);
$password=BlockSQLInjection($_POST['password']);

Zpět do poradny Odpovědět na původní otázku Nahoru