Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an.
Weitere Informationen
Welche PHP-Version verwenden Sie? Finden Sie es heraus! Prüfen Sie bei dieser Gelegenheit, wie die Variable register_globals bei Ihnen eingestellt ist. Dies gelingt mithilfe des folgenden PHP-Skripts:
<?
phpinfo();
?>
Im Browserfenster wird eine umfangreiche Übersichtseite erscheinen. Scrollen Sie in dieser Datei ein Stück nach unten und überprüfen Sie die Einstellung der Variablen register_globals.
Die Einstellung der Variablen können Sie in der Konfigurationsdatei php.ini jederzeit selbst vornehmen. Der Eintrag in der Konfigurationsdatei stellt sich wie folgt dar:
register_globals = On
Seit der PHP-Version 4.2 wird diese Variable jedoch standardmäßig auf Off gesetzt.
register_globals = Off
Sie merken es vor allem dann, wenn Sie Ihren eigenen Webserver betreiben und updaten. Schalten Sie daher bei Problemen mit Ihren PHP-Skripts (vorerst) zurück auf On. Nach einem Neustart des Webservers stehen die geänderten Einstellungen zur Verfügung. Die meisten Provider mit PHP-Unterstützung haben in der Regel noch nicht auf register_globals = Off umgeschaltet. Zu groß wäre wohl der Aufschrei vieler Kunden. Schließlich bedeutete diese Maßnahme, dass viele Skripts auf einen Schlag nicht mehr funktionierten. Vor allem bei umfangreichen Projekten wäre die Umstellung mit einem erheblichen Aufwand verbunden. Denn hinter dieser Änderung stecken z. B. die Informationen aus »GET« und »POST«, »COOKIES« und »SERVER« – also praktisch der gesamte Bereich externer Variablenquellen. Und diese Werte stehen nach der Änderung der Einstellung für register_globals nun nicht mehr zur Verfügung.
Die Informationen aus dieser Quelle können nun nicht mehr so einfach per $Variablennamen ausgelesen werden. Am Beispiel einer Formularauswertung will ich Ihnen dies verdeutlichen. Bisher war PHP wirklich einfach gestrickt. Der Name eines Formularfelds wurde automatisch zur Variablen.
<input type="text" name="telefon">
Im auswertenden PHP-Skript wurde folgendermaßen auf den Inhalt des Formularfelds zugegriffen:
$telefon
Dabei spielte es übrigens keine Rolle, ob das Formular per
method = "post"
oder
methode = "get"
abgeschickt wurde. Selbst die Werte von Cookies konnte man anhand ihres Namens ermitteln. Diese Schreibweise stellt sich als recht bequem dar, aber auch äußerst problematisch, wenn es um Eindeutigkeit und Sicherheit geht.
Probleme der Schreibweise – Eindeutigkeit
Es kann durchaus zu Verwechslungen kommen, vor allem wenn Sie nicht zu den diszipliniertesten Entwicklern gehören. Sie erzeugen etwa ein Formularfeld, das name heißt. Zufälligerweise steckt auch ein gleichnamiges Cookie in Ihrem Quellcode. Dann haben Sie ein Problem, denn sowohl der Inhalt des Formularfelds als auch der Wert des Cookies stehen nun über $name zur Verfügung. Diese Schwierigkeiten könnte man mit einer konsequenten Variablenbennenung vermeiden. Beginnen Sie Cookie-Variablen grundsätzlich mit einem kleinen c und Formular-Variablen mit einem kleinen f.
Probleme der Schreibweise – Sicherheit
Kommen wir nun zum Sicherheitsproblem. Es gibt bei schlampig programmiertem Code viele Angriffsmöglichkeiten für potenzielle Hacker. Schauen Sie sich einmal folgenden Teil eines PHP-Skripts an: