Avatar ·

Wie verhindert man SQL-Injection in PHP? (vollständige Anleitung)

Hallo zusammen! Ich bin ein PHP-Anfänger und habe ein ernstes Sicherheitsproblem. Ich schreibe ein einfaches Login-Formular für eine Website, und mein Code sieht ungefähr so aus: ```php $username = $_POST['username']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysqli_query($conn, $query); ``` Ich weiß, dass das furchtbar unsicher ist, aber ich verstehe nicht, wie ich es richtig beheben kann. Freunde sagten, dass ich durch SQL-Injection gehackt werden könnte. Ich habe versucht, im Login-Feld so etwas wie `admin' OR '1'='1` einzugeben, und tatsächlich – ich wurde ohne Passwort ins System gelassen! Ich habe über `mysqli_real_escape_string()` gelesen, aber gehört, dass das kein Allheilmittel ist. Außerdem wird über PDO und prepared statements gesprochen, aber ich verstehe nicht, wie man sie richtig verwendet. Mein Projekt läuft auf PHP 8.1 mit MySQL. Bitte erklärt mir ausführlich: 1. Wie genau funktioniert SQL-Injection? 2. Welche modernen Schutzmethoden gibt es? 3. Welche Methode gilt als Best Practice?