/ / Ist dieser Code vor SQL Injection geschützt? [closed] - PHP, MySQL, Sicherheit, Code-Injektion

Ist dieser Code vor SQL Injection sicher? [geschlossen] - PHP, MySQL, Sicherheit, Code-Injektion

Ich habe eine Spalte in einer MySQL-Tabelle, die entweder 0 oder 1 sein kann. Wenn der Benutzer keine 0 oder 1 eingibt, dann setze ich den Wert auf 0. Ich habe mich gefragt, ob dieser PHP-Code vor SQL-Injection "sicher" wäre:

$flag = $_GET["f"];
if ($flag != 1) $flag = 0;
$sql = "SELECT * from table WHERE column=$flag";
$db->query($sql);

Normalerweise verwende ich vorbereitete Anweisungen, aber ich habe mich gefragt, ob dieser Code vollständig sicher ist. Wenn das kaputt gehen kann, möchte ich ein Beispiel sehen.

Antworten:

3 für die Antwort № 1

Nein, das ist nicht sicher. Beispiel SQL-Injection: 1 OR 1 = 1

Dies ist gleich 1, weil (int)"1string" === 1.

Ich würde explizit darüber nachdenken (int) Besetzung vor der Übergabe an die Abfrage:

$sql = "SELECT * from table WHERE column=".(int)$flag;