Bekannte Sicherheits-Probleme PHP

AndrewPoison

Admiral Pro
✍️Leserartikel-Schreiber
Registriert
Jan. 2005
Beiträge
8.588
Hallo,
ich entwickel derzeit eine Website, um ein neues und besseres Webmail-Interface für meinen Server zu bekommen (Das Confixx-Webmail ist einfach unbrauchbar und sieht irgendwie hässlich aus).

Normalerweise sind meine PHP-Skripte nicht so umfangreich, als das sich außergewöhnliche Bemühungen bzgl. der Sicherheit lohnen würden. Doch bei dieser Sache ist dies nun anders.
Was gibt es nun allgemein an Sicherheitsdingen zu beachten?

Was ich bisher durchführe:
  • Zugriff auf die Website ist momentan mittels .htaccess passwortgeschützt (um auf ein internes, womöglich fehlerhaftes Passwort-System zu verzichten)
  • Eventuelle Eingaben werden mittels strip_tags behandelt
Das ist ja nun aber nicht alles, was es zu beachten gilt. Demnächst soll zur besseren Interaktion mit der Site auch Ajax einzug halten - in wie weit gibts hier bedenken?

Was gibt es also noch alles so im allgemeinen zu beachten?

Das Projekt ist zwar vorerst nur für den Privaten Gebrauch vorgesehen, doch sollte es sich zu etwas entwickeln, das wirklich dem entspricht was ich mir vorgestellt habe, würde ich es auch veröffentlichen wollen - und spätestens dann möchte ich es möglichst sicher haben.

Der Postfach-Zugriff erfolgt übrigens über die IMAP-Funktionen von PHP 5.
 
Zuletzt bearbeitet:
Eventuelle Eingaben werden mittels strip_tags behandelt
Die kann man simpel aushebeln, indem man nicht valides HTML benutzt, das vom Browser aber dennoch interpretiert wird. Außerdem bist du so nicht gegen XSS Attacken geschützt.

Ich checke Dinge, die über eine URL eingegeben, jenachdem was ich da erwarte. Wird eine ID übergeben, dann ist das eine Zahl - also checke ich, ob etwas übergeben wurde und es eine echte Zahl ist (is_numeric).

Zur Sicherheit übergebe ich diesen Wert dann in eine Variable plus (int), sprich: $meineid = (int)$_GET['meineid'] ... so kann wirklich nichts anderes mehr als eine echte Zahl enthalten sein.

Bei übertragenen Wörtern ist es ein wenig komplizierter - dort lösche ich alles, was nicht reingehört (stripslashes() bei Bedarf, HTML, JavaScript, Umbrüche und diversen Krams) mit einer eigenen Funktion.

Alle Anfragen an eine Datenbank behandle ich mit mysql_real_escape_string(), was auch schon viele Löcher stopft.
 
Glücklicherweise ist (zumindest bisher) nicht in Sicht, dass eine Datenbank nötig wäre. Bisher klappt alles recht zuverlässig über die IMAP-Funktionen von PHP. Und da wo es mal hakt, gibts häufig auf PHP.net entsprechende Lösungen für.

Aber danke erstmal für deinen Beitrag. Hoffentlich werdens noch mehr ^^
 

Ähnliche Themen

Zurück
Oben