So ich werde euch nun erklären, wie man eine SQL Injection Lücke auf seiner eigenen Seite schließen kann.

Als Beispiel hierfür verwende ich einen einfachen Registrierungsvorgang, der die eingetragenen Daten (Benutzername, Passwort und Emailadresse) in eine Datenbank schreibt.
Dafür werde ich euch den PHP-Code posten und ihn mit Kommentaren versehen, damit ihr versteht, was ich gemacht habe.

Das ist die Datei in der ihr die Daten eintragen müsst. (Es müsste ohne Erklärung verständlich sein)

Code:
         <form action="reg.php" method="post">    //sendet die Daten an die Datei reg.php
         <table border="0">
         <tr><td>Benutzername:</td><td><input type="text" name="benutzer"></td></tr>
         <tr><td>Passwort:</td><td><input type="password" name="pass"></td></tr>
         <tr><td>Wiederholung:</td><td><input type="password" name="passw"></td></tr>
         <tr><td>Emailadresse:</td><td><input type="text" name="mail"></td></tr>
         </table>
Und dann kommt noch die reg.php Datei:

Code:
<?php
include("include/db.inc");          //hier sind die Daten enthalten, die für die Verbindung mit der Datenbank erforderlich ist

$benutzer=$_POST['benutzer'];   //Eingaben bei Benutzer werden in der Variablen $benutzer gespeichert
$pass=md5($_POST['pass']);      //Eingaben bei Passwort  werden in der Variablen $pass gespeichert
$passw=md5($_POST['passw']); //Eingaben bei Passwort (Wiederholung) werden in der Variablen $passw gespeichert
$email=$_POST['mail'];             //Eingaben bei Email werden in der Variablen $email gespeichert

$benutzer=strip_tags($benutzer);     //HTML- und PHP-Code entfernen. (aus der Eingabe Benutzer)
$benutzer=htmlentities($benutzer); //Umlaute und Sonderzeichen in HTML-Schreibweise umwandeln
$benutzer=trim($benutzer);            //Entfernt überflüssige Zeichen am Anfang und Ende einer Zeichenkette
$benutzer=stripslashes($benutzer); //Backslashes entfernen

$email=strip_tags($email);             //Hier das Gleiche wie zuvor nur aus der Eingabe Passwort
$email=htmlentities($email);
$email=trim($email);
$email=stripslashes($email);

//Dieses Verfahren ist bei Passwort nicht nötig, da es mit md5 verschlüsselt wurde und dezufolge keine Sonderzeichen enthalten kann


//Jetzt werden die eingetragen Daten in die Datenbank geschrieben - aber ohne SQL Injections :)

$db=db_connect();
$anfrage="INSERT INTO login VALUES (0,'".$benutzer."', '".$pass."', '".$email."', now())";
$ergebnis=db_query($anfrage);
db_close($db);
?>
Ich hoffe, dass es soweit verständlich war. Ich habe keine HTML Erläuterung vorgenommen (auch keine MYSQL...), da das nicht der Sinn des Tutorials ist. Es soll jediglich gezeigt werden, wie man SQL Injections bei sich verhindern kann und habe deshalb gewisse Kenntnisse vorausgesetzt.

Falls ihr trotzdem noch Fragen zu bestimmten PHP/MySQL/HTML Abschnitten habt, dann werde ich dazu ggf. auch noch ein Tutorial machen.

mfg
j0kR