phpbar.de logo

Mailinglisten-Archive

[php] Sichere Authentifizierung

[php] Sichere Authentifizierung

Thorsten Körner t.koerner at 123tk.de
Sam Jun 11 23:10:39 CEST 2005


Hallo Thomas,

Am Samstag, 11. Juni 2005 22:39 schrieb tb at media-net.de:
> 1.) Auth mit HTML-Formular, DB/Textfile und Session
>
> Hier sehe die Schwachstelle, dass die Session-ID sowohl auf dem
> Server als auch beim Client theoretisch (!) von unbefugten
Warum theoretisch.
Auch praktisch ganz simpel: sieh einfach nach was als Cookie 
gespeichert ist. z.B. PHPSESSIONID = acf1232acf...
> ermittelt werden kann, sofern diese Zugang zu den Systemen haben.
Jeder Benutzer eines Browsers hat Zugriff auf die Cookies, die der 
Browser gespeichert hat.
>
> Serverseitig reicht dafür ein Lesezugriff auf den Session-Ordner
> (session.save_path). Clientseitig könnte die Session bei
> "--enable- trans-id" im Quelltext der gerenderten Seite
> eingesehen werden. Dazwischen wäre der Zugriff auf die ID
> ebenfalls möglich, wenn der Request nicht über eine gesicherte
> Verbindung erfolgt.

Serverseitig ist das Problem doch leicht zu lesen, indem 
session.save_path nur durch den Usernamen des Webservers und des 
Eigentümers lesbar ist.
session.save_path kannst Du auch in der Anwendung setzen, sollte 
aber natürlich außerhalb des DOCUMENT_ROOT-Pfades liegen.

Die Einwendung des Zugriffs auf dem Weg zwischen Server und Client 
gilt für alle ungesicherten Übertragungen also auch für HTTP_AUTH.

>
> Das Problem der Sichtbarkeit der ID im Filesystem kann man durch
> eine Verlagerung des Speicherorts in eine Datebank umgehen. Die
> php-Datei mit den DB-Zugangsdaten könnten m.E. mit Zend
> kompiliert werden.
Richtig.


Das eigentliche Problem stellt hier die evtl. Möglichkeit dar, dass 
User auf dem Server die Sessiondateien öffnen und lesen können. Das 
lässt sich durch oben genanntes Verfahren verhindert werden.

Ob jemand das Cookie mit der Session-ID ausliesst spielt keine 
Rolle, da eine (sehr leicht mögliche Manipulation) der Session-ID 
nur durch einen sehr, sehr unwahrscheinlichen Zufall eine neue ID 
hervorzaubert, zu der es eine aktive Session auf dem Server gibt.

Achte auf auf die Garbage-Collection, sorge dafür, dass inaktive 
Sessions nach kurzer Zeit zerstört werden, etc.

Achte auch darauf, dass nicht durch XSS-Attacken u.ä. evtl. Sessions 
Deiner User gestohlen bzw. entführt werden können 
(Session-Highjacking).

So wirst Du eine sichere Authentifizierung Deiner User auch mit 
Sessions erreichen.

CU
-thorsten


-- 
Thorsten Körner     |e-Commerce-Consulting  |Hosting
Dannenkoppel 51     |http://www.123tk.de    |Software-Entwicklung
D-22391 Hamburg     |Tel.: 040 / 536 308 27 |Qualtitäts-Sicherung
t.koerner at 123tk.de  |Fax:  040 / 536 308 26 |Beratung & Schulung

php::bar PHP Wiki   -   Listenarchive