Easy Coding
  Forum Wiki Tagging Projekte Karte RSS
» Start
» All Recent Changes
» Wiki Suche
» Wiki Hilfe

Coder How To's

Algorithmen Informationen

edit SideBar

Neue Wiki Eintrage finden Sie unter easy-coding.de/wiki.

PHP-Sicherheit

Früher war es wichtig das Programme funktioniert haben solange sie die Eingaben bekommen die sie auch erwarten. Mitlerweile ist es gerade im Internet immer wichtiger geworden auch auf die Sicherheit der Scripte zu achten. Wer schlecht programmierte Scripte auf seinem Server laufen hat kann sich damit Sicherheitslöcher schaffen die den ganzen Server lahm legen können. Deshalb ist es wichtig darauf zu achten das sämtliche eingaben die vom Benutzer kommen geprüft werden bevor man sie verarbeitet.

Webserver richtig konfigurieren

Rootserver bekommt heute jeder für wenig Geld, ob man schon Erfahrungen mit der Konfiguration von solchen Server hat wird nicht geprüft. Oft werden die Server vom Provider schlecht konfiguriert ausgeliefert, so dass man, bevor man einen neuen Server in Betrieb nimmt, erstmal selber Hand anlegen muss um ihn richtig zu konfigurieren. Auf keinen Fall sollte man PHP ohne den Safemode laufen lassen, da sonst jede Variable über die URL geändert werden kann und man leicht den Überblick verliert, welche Variablen vom Besucher geändert werden können. Um die Sicherheit des Webservers zu verbessern, kann man auch das Apache-Modul mod_secure installieren.

SQL injection

Ein Fehler den viele Anfänger machen ist, dass sie Eingaben vom Benutzer direkt in der Datenbank ausführen. Ein Beispiel hierfür wäre:

  1. $sql = "SELECT * FROM tabelle WHERE spalte = $_GET['variable'];";

Damit wird alles was der Besucher über ?variable=... an die URL übergibt in der Datenbank ausgeführt, so können z. B. auch Tabellen geändert oder gelöscht werden. Eine höhere Sicherheit erreicht man, indem man die Variable prüft und evtl. gefährliche Zeichen entfernt, bevor man die in dem Datenbankbefehl verwendet.

  1. $variable = mysql_real_escape_string($_GET['variable']);
  2. $sql = "SELECT * FROM tabelle WHERE spalte = $variable;";

Jetzt werden alle gefährlichen Zeichen escaped und können somit keinen Schaden mehr anrichten.

Variablen Prüfen

Grundsätzlich sollte man alles was vom Besucher rein kommt, sei es über $_GET bzw. $_POST oder ein Cookie prüfen und gefährliche Zeichen entfernen. Dazu kann man eine einfache Funktion verwenden duch die man alles was von außen rein kommt durchlaufen lässt.

  1. function income_secure( $income )
  2. {
  3.   if ( get_magic_quotes_gpc() )
  4.   {
  5.       $income = stripslashes( $income );
  6.   }
  7.   $income = htmlspecialchars( $income );
  8.   return $income;
  9. }

Jetzt kann man Variablen, die von außen kommen, damit sicherer machen, indem gefähliche Zeichen entfernt werden.

  1. $variable = income_secure($_POST['variable']);

Wenn eine Variable einen bestimmten Typ haben muss, kann man prüfen, ob die Variable auch wirklich den erwarteten Typ hat. Wer z. B. eine ID, die immer aus Zahlen besteht, übergibt, kann prüfen, ob die Variable $id auch wirklich eine Zahl enthält. Falls das nicht der Fall ist, wird eine Fehlermeldung ausgegeben und das Script abgebrochen.

  1. if ( !is_numeric($id) )
  2. {
  3.   die('Du darfst diese Seite nicht hacken');
  4. }
Zuletzt geändert am 03.09.2007 16:00 Uhr
  Impressum