mysql_real_escape_string nur Formular-Eingabefelder absichern?

Joe

Erfahrenes Mitglied
Hallo,
reicht es alle Get und Post Daten aus den Formularen und deren Eingabefeldern zu sichern. Oder sollten auch jene gesichert werden welche zb über ein Hidden Feld übergeben werden?
Und was ist mit den GetVariablen die über Links mitgegeben werden sollten die auch gesichert werden? Können die überhaupt manipuliert werden?

OK eigentlich ists mir fast selber klar hätte es trotzdem gerne nochmal gehört.

Grüsse Joe.
 
Alle Variablen, die per HTTP (=GET, POST) übertragen werden, können manipuliert werden.
Somit alles überprüfen!

Allerdings würde ich nur die Daten, die für SQL-Queries benötigt, werden mit mysql_real_escape sichern.
Andere, z.B. Zahlen so umwandeln:
PHP:
$zahl = $_GET['zahl']
$zahl = (int)$zahl;

PS: Nächstes mal im PHP-Forum posten ;)
 
  • Gefällt mir
Reaktionen: Joe
Oder sollten auch jene gesichert werden welche zb über ein Hidden Feld übergeben werden?

Die zählen genauso zu den Post-Daten wie auch Textfelder oder Checkboxen. Du kannst serverseitig ja auch garnicht wissen, woher es kommt. Also ja.

Und was ist mit den GetVariablen die über Links mitgegeben werden sollten die auch gesichert werden? Können die überhaupt manipuliert werden?

Gibt es Get-Variablen, welche nicht über Links übergeben werden? Das ist doch die Natur von Get-Variablen.



Generell solltest du alles sichern, was du in dein MySQL Query übernimmst. Post- oder Get-Variablen, welche du nicht in einem Query benutzt, brauchst du logischerweise nicht zu sichern.

Edit:
Alle Variablen, die per HTTP (=GET, POST) übertragen werden, können manipuliert werden.
Somit alles überprüfen!

Und Cookies natürlich auch. Also einfach alles was im Query benutzt wird, egal woher es genau kommt. Auch wenn es nicht von außerhalb kommt, macht es Sinn. Denn es geht ja nicht nur um Injections, sondern ein String kann ja auch ohne böse Absicht Zeichen enthalten, welche das Query zerstören.
 
Zuletzt bearbeitet:
Mit andren Worten ist so ziemlich alles angreifbar was Post und Get ist.
Kann ja eigentlich dann nur über die Adresszeile gehen wenn es kein Eingabefeld ist oder?

Na dann, da habe ich ja erst mal was vor mir.
 
Kann ja eigentlich dann nur über die Adresszeile gehen wenn es kein Eingabefeld ist oder?.

Ich kann auch ohne Browser mit einer bel. Programmiersprache irgendwelche Daten (Post, Get, Cookies) an deine Seite senden. Und Plugins wie Tamperdata oder auch Firebug machen das ein Kinderspiel.
Zum Beispiel kann man auch ganz einfach bei einer DropDown-Liste die Werte ändern und du denkst es können ja nur korrekte Werte sein, weil du sie vorgegeben hast, aber das ist nicht der Fall.
 
Kann ja eigentlich dann nur über die Adresszeile gehen wenn es kein Eingabefeld ist oder?
Wie meinst du das genau?
Eingabefelder haben nichts mit der Adresszeile bzw. GET zu tun.

Und Cookies natürlich auch. Also einfach alles was im Query benutzt wird, egal woher es genau kommt. Auch wenn es nicht von außerhalb kommt, macht es Sinn. Denn es geht ja nicht nur um Injections, sondern ein String kann ja auch ohne böse Absicht Zeichen enthalten, welche das Query zerstören.
Ja, genau. Danke.
 
Wie meinst du das genau?
Eingabefelder haben nichts mit der Adresszeile bzw. GET zu tun.

Eingabefelder werden ja meist mit Post übergeben. Wie die manipulierbar sind ist mir klar. Nur bei den andren Post Variablen war mir nicht klar wie diese manipulierbar sind. Deswegen die Frage ob über dies über Adresszeile geschieht.

Ich kann auch ohne Browser mit einer bel. Programmiersprache irgendwelche Daten (Post, Get, Cookies) an deine Seite senden. Und Plugins wie Tamperdata oder auch Firebug machen das ein Kinderspiel.
Zum Beispiel kann man auch ganz einfach bei einer DropDown-Liste die Werte ändern und du denkst es können ja nur korrekte Werte sein, weil du sie vorgegeben hast, aber das ist nicht der Fall.

Verstehe dann ist es auf jeden Fall notwendig alles zu prüfen was über Get Post kommt und an die Datenbank geschickt wird.
 
Verstehe dann ist es auf jeden Fall notwendig alles zu prüfen was über Get Post kommt und an die Datenbank geschickt wird.
Aber auch andere Dinge, z.B.
PHP:
/* FALSCH! */
$article_id = $_GET['article_id'];
header("Location: article.php?id=$article_id");

/* RICHTIG! */
$article_id = (int)$_GET['article_id'];
header("Location: article.php?id=$article_id");
 
  • Gefällt mir
Reaktionen: Joe
OK dann werde ich mal meine gesamte Seite durchforsten und die von euch erwähnten Schwachstellen abstellen.

Danke für die Infos.
 
Zurück