Moin!
könntet Ihr mir sagen ob dieser Abschnitt sicher vor SQL Injections ist?
$sql = mysql_query("SELECT Benutzer, Passwort FROM Mitglieder WHERE Benutzer = '".$_POST['Benutzer']."'") or Fehler_4(&$Fehler_4);
Nein, dieser Abschnitt ist nicht sicher, weil über $_POST['Benutzer'] und damit von außen SQL-Code eingeschleust und ausgeführt werden kann.
BTW: Notiert man das '&' vor der Variablen nicht im Funktionskopf, wenn man eine Referenz übergeben möchte?
Deshalb habe ich hier mysql_real_escape_string($_POST['Benutzer']) genommen.
Wenn das ganze dann so aussieht …
$sql = mysql_query("[code lang=sql]SELECT Benutzer, Passwort FROM Mitglieder WHERE Benutzer = '
".mysql_real_escape_string($_POST['Benutzer'])."'")
or Fehler_4(&$Fehler_4);[/code]
… ist schon sehr viel gewonnen, weil:
Aber die Funktion ist mir trotz nachlesen nicht wirklich klar. Ich mache damit einen String aus dem Wert in $_POST['Benutzer']?
mysql_real_escape_string maskiert alle potentiell gefährlichen Zeichen, so dass der Rückgabewert der Funktion (ein String) so wie oben in Abfragen eingebaut werden kann.
HTH und viele Grüße,
Robert