Donald2603: MYSQL mysqli_real_escape_string

Beitrag lesen

Hallo Leute,

Ich lese schon den ganzen Tag über Sicherheit und SQL-Injektionen. Bin neu in dem Thema SQL.
Derzeit sieht mein Code in etwa so aus:

  
$db = mysqli_connect('xxx', 'xxx', 'xxx', 'xxx') or exit;  
if(!empty($_POST['input1']))  
{  
    $benutzer = htmlspecialchars($_POST['input1']);  
}  
$input1sql = mysqli_real_escape_string($db, $benutzer);  
$query = mysqli_query($db, 'SELECT benutzer FROM users WHERE benutzer=\''.$input1sql.'\'');  

Zusätzlich dazu habe ich folgende Codezeile eingegeben, um zu testen, was mysqli_real_escape_string verändert:

echo $benutzer . '<br />' . $input1sql;

Jedoch zeigen beide Variablen das Gleiche ein, egal was ich eingebe. Ich habe es mit der Eingabe: testnutzer" OR 1 OR " versucht. Der echo ergab zwei identische Strings. Wie sicher ist der Code?

Derzeit habe ich noch nicht durchblickt, wie prepared Statements funktionieren. Bringt das deutlich mehr Sicherheit für die Abfrage?

Vielen Dank euch und beste Grüße

Donald