Auge: variablenübergabe mit $_Get[]

Beitrag lesen

Hallo

Grüße,

$name = $_GET['name'];
"SELECT * from test WHERE name=$name"

dafür gehörst du gestraft!
Danke für die ehrliche Antwort
bist du dir bewusst, dass an dieser stelle beliebiges code reingeshcleust werden kann? das nciht nru fehler sondern auch schaden produizert?
Dessen bin ich mir nicht bewusst ! Wie fange ich dies dann ab?

1. Du prüfst den übergebenen Wert auf Plausibilität.
Das ist aber bei Freitext nicht so einfach. Das ginge aber mit einem regulären Ausdruck.

2. Der Wert muss kontextgerecht behandelt werden.
Es kann Schadcode übergeben werden, hier ein Stück Name mit folgendem Code, der als SQL-Query durchgeht und in deinem Fall ausgeführt wird. Siehe dazu auch Cheatahs Verlinkung. Hier ist der Kontext MySQL, die für Strings zu benutzende Funktion heißt mysql_real_escape_string, Ganzzahlen sind mit intval zu behandeln.

3. Das Umkopieren in eine Variable macht, exzessiv angewandt, den Code unübersichtlich.
Irgendwann fügst du irgendwo zusätzlichen Code ein und weißt dann evtl. nicht mehr um die Herkunft von $name.

$Query = [code lang=sql]"SELECT * from test WHERE name = '". mysql_real_escape_string($_GET['name']) ."'";[/code]

Tschö, Auge

--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
Veranstaltungsdatenbank Vdb 0.3