|
T u t o r i a l
|
|
PHP Tutorial > Kapitel 10: Sicherheit
Antworten zu Fragen aus Kapitel 9:
1. Was macht der Switch Ausdruck?
Switch ist eine andere Schreibweise für die IF Anweisung.
2. Welche drei Funktionen benutzt man um durch Verzeichnisse in einer While
Schleife zu "loopen"?
opendir(), readdir()
und closedir().
3. Kann man [url1=http://www.php.net/rename]rename()[/url] auf Dateien und
auf Ordner anwenden?
Ja.
4. Welche Funktionen benutzt man um Dateien und Ordner zu löschen?
Dateien: unlink() Ordner: rmdir()
Was ist Sicherheit?
Zuerst stellt sich die Frage, vor was soll man Sicherheit haben?
Vor dem, dass jemand in Deine Wohnung einbricht und Deinen Server stiehlt oder
vor dem, dass jemand Deine Seite "hackt"?
Beides ist möglich und kann nicht 100%ig ausgeschlossen werden.
Doch wenden wir uns lieber der größeren "Gefahr", dem "gehackt" werden, zu.
Tutorial_Kapitel10_Beispiel_1.php:
<?php
echo "Hallo Welt";
?>
|
Ist dieses Beispiel sicher? Kann man es nicht irgendwie doch hacken?
Im größer und komplizierter Dein PHP Script ist, desto schwerer wird es für Dich
mögliche Sicherheitslücken zu finden.
Beispiel 1 ist hingegen Idiotensicher, da es keine "Kritischen Befehle"
ausführt. Befehle, die Deinen Server beeinflussen, sollten mit Sorgfalt
eingesetzt werden.
Vertraue niemals dem Benutzer
Alles, was von einem Benutzer kommt, ist potentiell "vergiftet" und
"verstrahlt".
Zuerst müssen die Daten "gesäubert" werden bevor sie durch kritische Befehle
gelangen.
Dies klingt Paranoid, ist es vielleicht auch, aber so kannst Du dir sicher sein,
dass Du gar nicht oder erst durch einen Super-Profi ausgetrickst wirst, der dank
deinen Sicherheitsmaßnahmen nur sehr geringen Schaden anrichtet.
Variablentypen auf richtigen Typ prüfen
Wenn Du Variablen über Links oder Formulare weitergibst, solltest Du immer
darauf achten, was Du bekommst.
Beim Arbeiten mit Datenbanken kann es vorkommen, dass Benutzer von außen
zufällig eine schwache Stelle im PHP Script entdecken und bösen Code
einschleusen.
Auf http://at.php.net/manual/de/ref.var.php
findest du eine Liste von Funktionen, mit denen du Variablen auf Typen
überprüfen kannst.
Register Globals
Register Globals ist eine PHP Einstellung, die erlaubt, dass $_GET,
$_POST und $_COOKIE Werte direkt als Variablen im PHP Script erscheinen, wenn
sie auf "on" gestellt ist.
Wenn jetzt ein $_GET["wert1"] existiert, gibt es automatisch die Variable
$wert1.
Die meisten "Free PHP Hoster" haben diese Einstellung "on". Dies ist eine hohe
Sicherheitsfalle für unerfahrene Programmierer.
Tutorial_Kapitel10_Beispiel_2.php:
<?php
if($passwort == "meinpasswortlala") { $do = 1; }
if($do == 1) { echo "Mein größtes Geheimnis: Ich lutsche noch immer an meinem Daumen :("; }
?>
|
Man muss in diesem Beispiel nicht einmal das Passwort wissen, sondern nur
die Variable $do auf eins setzen um das "Geheimnis" zu lüften.
Rufe das PHP Script folgendermaßen auf und Du kommst trotzdem rein:
Tutorial_Kapitel10_Beispiel_2.php?do=1
WIESO? Ganz einfach: In diesem Script wird die Variable $do nicht
gesetzt, außer wenn das Passwort richtig ist.
Ist Register Global also "on" wird das Tutorial_Kapitel10_Beispiel_2.php?do=1
also $do = 1; übernommen und somit wird bei der zweiten IF Abfrage
durchgelassen.
Hätte man hier $_GET["do"] verwendet, wäre das nicht passiert. ;)
Also, wenn Du die Möglichkeit hast Register Globals auszuschalten, mache es.
Alle Beispiele von Kapitel 10
|
|
|