Christoph Jeschke: Sessions vs htaccess / sicherheit? was meint ihr?

Beitrag lesen

Guten Tag,

Einen Nachteil bei Sessions ohne Cookies sehe ich darin, dass URLs, in denen
die Session-ID auftaucht, benutzt werden können, um die Session zu "hijacken".

Es ist gar nicht notwendig, dass die Session bereits in der URL angegeben wird, es reicht, wenn die Möglichkeit dazu besteht (session.use_trans_sid = On). Man kann dann nämlich einen User mit einer bereits bekannte Session starten lassen (Session Fixation, session_regenerate_id()).

Zusätzlich gibt es noch das Problem, dass eine bestehende Session zu bösartigen Zwecken benutzt werden kann (Cross Site Request Forgery). Ein nicht völlig unbekanntes CMS hat das Problem, dass es für CSRF verwundbar ist und man einen Eintrag in die interne IP-Blackliste schmuggeln kann, der Zugriffe _jeder_ IP-Adresse (.) verbietet - auch die des Administrators.

Dem kann man natürlich entgegenwirken, z.b. dadurch, dass besonders
sicherheitskritische Funktionalitäten eben nochmal eine erneute
Authentifzierung erfordern oder die Session nach ner Zeit abläuft (ist ja
glaube ich sogar Standard).

Es gibt in PHP einen Mechanismus, er eine ungenutzte(!) Session nach einer bestimmten Zeit und mit einer bestimmten Chance aufräumt.

Trotzdem, das ist nicht ganz unproblematisch, und
kann bei .htaccess-Schutz nicht passieren.

Nahezu alle Authentifizierungsmöglichkeiten sind für CSRF anfällig, egal ob PHP-Session oder Basic Auth.

Ein Nachteil widerrum bei .htaccess:
Es reicht eine kleine Unachtsamkeit bei der Serverkonfiguration (dass z.b.
die .htaccess-Datei ungewollt beschreibbar durch einen Prozess wird), und das
wars mit der Sicherheit.

Das ist kein prinzipielles Problem der Konfiguration über eine .htaccess-Datei. Genauso leicht ist es möglich, einen Programmierfehler in eine Applikation einzubauen, der XSS ermöglicht. Das passiert (vermutlich) sogar viel öfter.

-> Mein pers. Fazit: Wenn der Server-Administrator weiß was er tut, nehmen
sich .htaccess-Schutz und Authentifizierung über Sessions nicht so viel.

Ich persönlich hätte da viel mehr Sorgen um die Qualität der Applikation. Ansonsten bin ich aber der Meinung, dass eine Authentifizierung in eine Applikation gehört und nur in Fällen, wo es keine Applikation gibt, in den Webserver.

Für komplexere Systeme (viele Benutzer, viele Rollen, viele Benutzergruppen)
wird die Wartung über .htaccess jedoch sehr umständlich. Für kleinere
Anwendungen dagegen ists ok.

.htaccess sind nur Steuerdateien für die Serverkonfiguration. Was darin konfiguriert wird, ist eine andere Frage. Es gibt übrigens durchaus auch Apache-Module, welche eine Authentifizierung über LDAP o.ä. anbieten.

Gruß
Christoph Jeschke

--
Zend Certified Engineer
Certified Urchin Admin