Ich würde gerne mal Eure Meinung zum Thema Sicherheit bei Login-Skripten bzw. Websites mit Loginbereichen hören.
Ich mach PHP Hobby-mäßig in Selbstversuchen und beginne jetzt auch mit diversen "gesicherten Breichen" auf einer Homepage.
Könnte mal jemand bewerten wie sicher meine Maßnahmen sind und wie sie vielleicht sein sollten?
Es gibt eine automatische Registrierung, mit generiertem Passwort, das per Mail an den User geschickt wird und nach Anmeldung geändert werden kann. Bevor der Benutzer sich erfolgreich anmelden kann muss er von mir direkt in der Datenbank aktiviert werden (ein Feld auf true gesetzt werden).
Die Anmeldung erfolgt über ein Formular auf der Page. Nach dem Klick auf "Login" werden eingebene Daten mit der MySQL DB abgeglichen (das Passwort ist md5 verschlüsselt gespeichert) und im Erfolgsfall ein Cookie mit Namen und (verschlüsseltem) Passwort gesetzt, der nach einer Stunde abläuft. Bei jedem neuen Seitenaufruf, wird dann getestet, ob der Cookie noch vorhanden ist und ob die Passwörter (verschlüsselt) übereinstimmen. Wenn ja, wird der Cookie neu gesetzt, wenn nicht, gelöscht.
Das alles geschieht in einer zentralen PHP-Datei, die dann wenn alles erfolgreich war eine zentrale Variable (Bsp: $test) gleich true setzt oder eben false. Diese Datei "includiert" dann alles andere, die menue.php für das Menü links, die content.php für den Inhalt in der Mitte usw.
Ich arbeite überall mit $_COOKIE[...] und $_REQUEST[...] Variablen, allerdings sind die globals noch nicht entsprechend angepasst (also "on" gestellt, für maximale Sicherheit, oder?). Kann ich das selber machen oder muss das mein Provider machen?
Die SQL Zugangsdaten liegen in einem htaccess geschützten Ordner.
Die einzige Sicherheitslücke, die mir jetzt einfallen würden, ist ein absichtliches Setzen der $test-Variable (deren Name jedoch erstmal rausgefunden werden müsste) mittels zum beispiel dem Aufruf der Seite in der Browserzeile: www.mypage.de/zentral.php?test=1
Dafür muss ich die globals noch umstellen (lassen?).
Was fehlt da noch zu einem vernünftigen Sicherheitskonzept, ist das alles Blödsinn wie ich das gemacht habe? Hackt sich der Durchschnittshacker da in 5 Minuten rein? Wie seht Ihr das? Wie macht Ihr das? Was für generelle Möglichkeiten kann man noch ergänzend anwenden?
Ich mach PHP Hobby-mäßig in Selbstversuchen und beginne jetzt auch mit diversen "gesicherten Breichen" auf einer Homepage.
Könnte mal jemand bewerten wie sicher meine Maßnahmen sind und wie sie vielleicht sein sollten?
Es gibt eine automatische Registrierung, mit generiertem Passwort, das per Mail an den User geschickt wird und nach Anmeldung geändert werden kann. Bevor der Benutzer sich erfolgreich anmelden kann muss er von mir direkt in der Datenbank aktiviert werden (ein Feld auf true gesetzt werden).
Die Anmeldung erfolgt über ein Formular auf der Page. Nach dem Klick auf "Login" werden eingebene Daten mit der MySQL DB abgeglichen (das Passwort ist md5 verschlüsselt gespeichert) und im Erfolgsfall ein Cookie mit Namen und (verschlüsseltem) Passwort gesetzt, der nach einer Stunde abläuft. Bei jedem neuen Seitenaufruf, wird dann getestet, ob der Cookie noch vorhanden ist und ob die Passwörter (verschlüsselt) übereinstimmen. Wenn ja, wird der Cookie neu gesetzt, wenn nicht, gelöscht.
Das alles geschieht in einer zentralen PHP-Datei, die dann wenn alles erfolgreich war eine zentrale Variable (Bsp: $test) gleich true setzt oder eben false. Diese Datei "includiert" dann alles andere, die menue.php für das Menü links, die content.php für den Inhalt in der Mitte usw.
Ich arbeite überall mit $_COOKIE[...] und $_REQUEST[...] Variablen, allerdings sind die globals noch nicht entsprechend angepasst (also "on" gestellt, für maximale Sicherheit, oder?). Kann ich das selber machen oder muss das mein Provider machen?
Die SQL Zugangsdaten liegen in einem htaccess geschützten Ordner.
Die einzige Sicherheitslücke, die mir jetzt einfallen würden, ist ein absichtliches Setzen der $test-Variable (deren Name jedoch erstmal rausgefunden werden müsste) mittels zum beispiel dem Aufruf der Seite in der Browserzeile: www.mypage.de/zentral.php?test=1
Dafür muss ich die globals noch umstellen (lassen?).
Was fehlt da noch zu einem vernünftigen Sicherheitskonzept, ist das alles Blödsinn wie ich das gemacht habe? Hackt sich der Durchschnittshacker da in 5 Minuten rein? Wie seht Ihr das? Wie macht Ihr das? Was für generelle Möglichkeiten kann man noch ergänzend anwenden?