Sicherheit mit PHP

F

Friedrich

Guest
Hallo!

Bin zwar bei einem Webhoster und habe keinen eigenen Server. Aber wie ich höre können auch selbst geschriebene PHP-Skripte Sicherheitslücken aufweisen. Weiß wer Tips, was man machen muss, damit es gar nicht erst zu "Angriffen" kommt? Wer kennt andere Internetseiten?

Friedrich
 
Das wichtigste:

In der Settings muss Register Globals ausgeschaltet sein.

Zweitwichtigstes:

Wenn Standard-Scripte wie phpBB-Forum, etc. verwendet werden, immer die neusten Sicherheits-Updates heraufladen.

Bei Datei-Uploads (z.B. für Bilder) immer überprüfen, ob es wirklich ein Bild ist. Nicht dass jemand eine *.php-Datei heraufladen kann.

 
magic quotes einschalten oder alle ' zeichen in queries escapen um SQL Injections zu verhindern!
ph34r.gif
 
Die letzten 2 Tipps sollten 99% aller Angriffe abwehren ;-) (ist wirklich so, sind immer die gleichen Angriffs-Versuche, da sich meistens irgendeiner einfach einen Exploit lädt & dann drauf los phpbbs versucht zu knacken)

Musst dir einfach mal n bissel die Apache-Log eines Servers durchsuchen, auf dem phpbb (zum Beispiel) installiert ist ;-)
 
> phpbbs

Ich verwende nur selbstprogrammierte Skripte. Und meine Foren sind richtig einfach (reicht ja auch).

> magic quotes einschalten oder alle ' zeichen in queries escapen um SQL Injections zu verhindern!

Wieso ' Zeichen?

> In der Settings muss Register Globals ausgeschaltet sein.

Ist aber vom Webhoster festgelegt, oder?

> Bei Datei-Uploads (z.B. für Bilder) immer überprüfen, ob es wirklich ein Bild ist. Nicht dass jemand eine *.php-Datei heraufladen kann.

Habs schon probiert. Ich habs so programmiert, das dann wirklich ein Bild kreiert wird (ein Neues). Und da wird das Skript, was übertragen werden sollte, einfach gelöscht.
 
QUOTE (Friedrich @ Fr 19.5.2006, 15:09) Wieso ' Zeichen?

Darum:

Wenn Du ein Loginscript à la


CODE
mysql_query("select * from user where username = '" . $_POST["username"] . "' and password = '" . $_POST["username"] . "'");



hast, wird bei einem normalen Login das draus:


CODE
select * from user where username = 'user123' and password = 'password123'



Bei einer Injection gebe ich als Passwort ein password123' or 1 = 1

daraus wird:


CODE
select * from user where username = 'user123' and password = 'password123' or 1 = 1



Und schon bin ich drin
blink.gif
 
Ich muß gestehen, ich finde die meisten der hiesigen Tipps zwar nicht falsch, aber unzureichend.

Es ist nicht damit gelöst, zu sagen, 'mache dies, dann passiert dir nichts'.

Es fängt an mit der Architektur einer Anwendung, geht über die Konfiguration des Servers (Dienstkonten) oder 'schlafende Nutzer' bis hin zu versteckten Fehlern, bei denen ein neues Feature plötzlich an einer anderen Stelle eine Lücke aufreißen kann. Und jede Verwendung einer Funktion, die Nutzereingaben entgegennimmt, kann womöglich problematisch sein, das ist auch nicht mehr die Frage Microsoft oder OpenSource.

Eigentlich ärgerlich finde ich, daß Leute nebenbei programmieren, ein paar Codezeilen von irgendwoher kopieren oder irgendeine, meist kostenlose Software installieren - und wenn es dann knallt und kracht, ist alles, auch das, was die Nutzer der Site investiert haben, weg.

Andererseits ist mir das inzwischen auch größtenteils egal - es fällt auf jene zurück, die sich dieser Methoden bedienen.
 
Deswegen sagte ich ja 99%, das sind einfach die am häufigsten auftretenden Fehler meines Erachtens.

Natürlich hat man durch das beachten dieser weniger Tipps noch keine sichere Webseite.
 
Zurück
Oben