Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 2 - Daten absichern Teil 1

1. Die Abschnitte

2. Fremde Zungen

Mittlerweile gibt es in Deutschland ja zig Zahnärzte, deren Ursprung in anderen Ländern liegt. Das merkt man auch am Namen. Und das kann ein Problem sein. Nicht das die von anderswo herkommen, sondern dass sie zum Beispiel ein Hochkomma im Namen haben.

Um euch jetzt mal die Problematik zu zeigen, wollen wir den Datensatz eines Herstellers ändern. Also ruft man die entsprechende Seite auf, wählt einen Datensatz aus und ändert den Namen in Al Hr'abiri. Keine Ahnung ob es so einen arabischen Namen gibt. Er klingt zumindest so, aber egal. Wenn ihr die geänderte Eingabe abspeichert, so gibt es zwei Möglichkeiten.

3. Eine Fehlermeldung

Das geschieht, wenn in der php.ini der Wert für magic_quotes_gpc auf Off steht. Denn dann passiert dieses. Wir schicken eine Anfrage an die die Datenbank, deren Anfang so aussieht.


UPDATE 
 hersteller 
SET
 zulieferer 'Al Hr'Abiri',

Wie das geübte Auge schnell erkennt, gibt es einen Syntaxfehler. Und zwar genau an der Stelle, wo wir im Namen das Hochkomma gesetzt haben. Also wird die Abfrage nicht ausgeführt. Wer ein lokales Testsystem hat, auf dem es trotzdem funktioniert, sollte mal spaßeshalber den Eintrag in der php.ini anpassen, den Apache neu starten und sich die Meldung ansehen.

Erklärung

Wenn magic_quotes_gpc auf Off steht, so wird die Datenbankanfrage einfach an den MySQL-Server geschickt. Was sonst geschieht, zeige ich euch nun.

4. Keine Fehlermeldung

... kommt, wenn obige Bedingung erfüllt ist. Also der Wert von magic_quotes_gpc auf On steht. Dann werden automatisch alle Hochkommata, Anführungszeichen, Backslashes (\) und der Wert NULL escaped, bevor die Abfrage abgeschickt wird. Wenn ihr jetzt mal direkt in eure Datenbank schaut, dann steht dort korrekt Al Hr'Abiri.

Aber!

Darauf sollte man sich nicht verlassen. Ändert jetzt mal das Al Hr'Abiri und tragt <script type="text/javascript">alert('hallo');</script> ein. Dann plöppt nach dem Speichern eine Alert-Box auf. Und das ist ein ziemliches Sicherheitsrisiko. Die Details dazu erfahrt ihr hier.

Außerdem ist die Einstellung magic_quotes_gpc mit PHP 5.3 als deprecated eingestuft worden und verschwindet mit der Version 6 endgültig. Der Sinn dahinter ist, dass der Programmierer sich selbst um Benutzereingaben kümmern und nicht blind auf PHP verlassen soll. Und dazu komme ich jetzt.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt