| 

.NET C# Java Javascript Exception

2
Wenn sich ein Kunde über sein Login bei mir anmeldet, kann er in seinem Bereich die Adresse ändern. Dazu wird aus der bestehenden Datenbank die Adresse in ein Formular geladen und der Kunde kann die Daten beliebig anpassen. Beim Absenden wird über die Update-Funktion die DB aktualisiert. Das funktioniert auch gut. Als Schutz vor SQL-Injections habe ich mysql_real_escape_string eingebaut (ich habe allerdings keine Ahnung, wie das funktioniert). Ist das so ausreichend? Hier mein Skript (nur Strasse):

<?php
$strasse = $_POST["Strasse"];
$abfrage = "UPDATE Kundendaten SET Strasse='$_POST["Strasse"] ' WHERE username =
'".mysql_real_escape_string($_SESSION["user"])."' "; /*echo $abfrage;*/
$res = mysql_query($abfrage) or die(mysql_error());
if(mysql_num_rows($res) == '0'){
$error = 'Fehler bei der DB-Abfrage';
} else {
$row = mysql_fetch_assoc($res);
mysql_close ($dbverbindung);
header('Location: forum_index.php');
}
?>
08.02.2012
vlowe 11 2
3 Antworten
1
Nein, das reicht definitiv nicht aus.
Schau Dir die Prepared Statements an, damit hast Du den schon mal ein Grundstein gelegt.

Folgenden Satz musst Du Dir hinter die Ohren schreiben: All user input is evil!
Du darfst Dich nicht darauf verlassen dass die Daten vom Browser OK sind. Vor der Weiterverarbeitung müssen diese umbedingt geprüft werden. Solche Konstrukte sind ein absolutes No Go:
"UPDATE Kundendaten SET Strasse='$_POST["Strasse"] ...
08.02.2012
Jaksa 4,0k 2 8
0
Mal davon abgesehen dass du $_POST["Strasse"] nicht mit mysql_real_escape_string bearbeitest sondern nur $_SESSION["user"] und dass du nicht abfragst (isset()) ob die Daten existieren/übergeben wurde, sollte es nicht
"(...)Strasse='$_POST["Strasse"] '(...)"
sondern wohl eher
"(...)Strasse='".mysql_real_escape_string($strasse)."'(...)"
heißen, oder?

Nebeninfo: vllt. solltest du nicht nur mysql-injections versuchen zu verhindern sondern auch Angriffe auf das HTML. Stichwort ist hier unter anderem htmlentities();
08.02.2012
Karill Endusa 1,5k 1 9
0
Hier und hier wurde das bereits auf CK diskutiert..
08.02.2012
puls200 3,8k 7

Stelle deine Php-Frage jetzt!