magic_qotes Frage + mysql_real_escape_string

katlina

Mitglied
Hallo an alle. Hätte mal ne Frage zum Thema Sicherheit: mein Provider hat serverseitig folgende Konfiguration: magic_quotes_gpc= On, magic_quotes_runtime= Off, magic_quotes_sybase Off. Wie gehe ich nun am besten in Bezug auf die Maskierung der an den Server für SQL übergebenen Daten vor ? Muss ich diese Maskieren oder nicht ? Laut Beschreibung unter http://www.php.net/manual/de/function.mysql-real-escape-string.php soll ich die automatisch gesetzten Backslashes erst entfernen

Code:
if(get_magic_quotes_gpc()) {
            $product_name        = stripslashes($_POST['product_name']);
            $product_description = stripslashes($_POST['product_description']);

und dann mit mysql_real_escape_string wieder neu setzten. Welchen Sinn hat diese Maßnahme ? Wenn serverseitig schon maskiert wird (ist doch so, oder ?), warum soll ich erst demaskieren und dann neu maskieren ?

Und eine 2. Frage:

Code:
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')

Muss ich meine Verbindungsdaten zur Datenbank extra schützen und wenn ja, wie kann ich das ? Ebenfalls mit mysql_real_escape_string (falls sich das nicht erübrigt, siehe Frage oben) ? Schonmal vielen Dank.
 
Zuletzt bearbeitet:
Das kann ich nicht, habe keinen Zugriff auf die php.ini, geht ja um den Server meines Providers, nicht um meinen lokalen :-) .
 
Weil Magic Quotes eine vielleicht gut gemeinte aber im Nachhinein dumme Erfindung ist. Deswegen fliegt dieses Feature auch in PHP 6 raus. Stattdessen ist es wieder die Aufgabe des Programmierers sich darum zu kümmern, dass Metazeichen je nach Kontext maskiert werden.
Lies dir einfach mal die verlinkten Seiten des PHP-Handbuchs durch. Dort steht alles Wissenswerte geschrieben.
 
Möchte nochmal auf meine Eingangsfrage verweisen: ist es notwendig, erst zu demaskieren und dann wieder zu maskieren ? Noch Meinungen ?
 
Es ist deswegen eine dumme Idee gewesen, da es als Option angeboten wurde und damit von der Konfiguration des Webservers abhängig ist. Für den Einsteiger war es sicherlich eine Hilfe, da sich so kaum über Sicherheit Gedanken gemacht werden musste.
Und genau hier ist auch der Nachteil. Denn es wird sich häufig darauf verlassen, dass diese Option aktiviert ist. Doch das ist eben nicht immer der Fall. Aber darüber macht sich ja niemand Gedanken.

Der versierte Programmierer hingegen versucht von solchen optionalen Einstellungen so unabhängig wie möglich zu programmieren und kümmert sich um die Maskierung der Werte lieber selbst (nennt sich auch Portabilität/Plattformunabhängigkeit). Da weiß er dann wenigstens, dass es geschieht und was genau geschieht (denn nicht immer sind die Magic Quotes die richtige Maskierung).
Hier kommen ihm die Magic Quotes aber wieder in die Quere. Denn doppelt maskierte Werte sind auch nicht das Richtige. Also muss er entweder dafür sorgen, dass die Magic Quotes entweder deaktiviert werden oder entfernt werden, um wieder die Rohdaten zu bekommen.
 
Das ist sicher alles richtig, was Du sagst, Gumbo. Doch mir geht es momentan nicht darum, ob das eine dumme Idee ist oder was ab PHP6 ist, sondern nur darum, ob magic quotes = on das gleiche bewirkt wie das maskieren mit mysql_real_escape_string. Es ist bei meinem Provider aktiviert und ich möchte somit entsprechend programmieren. Wenn man eine möblierte Wohnung mietet, haut man ja auch nicht die vorhandene Couch raus, um sich dann genau die gleiche wieder zu kaufen. Das mal zum Vergleich, wie ich diesbezüglich denke. Bitte beantwortet mir mal jemand meine Frage ? Seid so nett :( .
 
Zurück