PHP und MySQL
Transcription
PHP und MySQL
Zentrum für Informationsdienste und Hochleistungsrechnen PHP und MySQL Sicherheit und Session-Handling mit PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351 - 463 - 32424 Michael Kluge ([email protected]) Sessions – Themenübersicht Funktionsweise von Sessions Wann sind Session sinnvoll Wie realisiert man eine Session Sicherheit von Sessions Sicherheit allgemein Michael Kluge Sessions – Funktionsweise von Sessions Sessions speichern Daten Serverseitig solange eine Session (Sitzung) andauert Sessiondaten werden dem Benutzer über eine Session-ID in einem Cookie zugeordnet Sessiondaten werden auf dem Server gespeichert Browser (mit sessioncookie) Webserver (mit session daten) PHP-Skript (erfragt session-id vom browser und lädt daten vom webserver) Michael Kluge Sessions – Wann sind Sessions sinnvoll Sessions sind immer dann sinnvoll wenn Daten von einem Skript an ein anderes ohne Parameterübergabe übermittelt werden sollen Wenn ein Benutzer authentifiziert wird und über eine längere Zeit mit einem System arbeitet Wenn eine History erzeugt werden soll die dem Benutzer beliebige Rücksprungpunkte anbieten soll Michael Kluge Sessions – Realisierung von Sessions Beginn einer Session mit session_start() – fragt beim Browser nach session-id – prüft ob Session aktuell – lädt bestehende Session, oder legt neue an Zugriff auf die Session-Daten über globale Variable – $_SESSION (assoziatives Array) Löschen einer Session mit session_destroy() session_unset() löscht das $_SESSION Array, lässt aber die Daten auf der Platte Michael Kluge Sessions – Eingabe History mittels Session <?php session_start(); // anhängen der letzten eingabe $_SESSION['user'][] = $_REQUEST['user']; // ausgabe der history echo 'Zuletzt eingegebene Benutzer Namen: <br />'; foreach( $_SESSION['user'] as $cur_user) { echo $cur_user.'<br />'; } ?> <!-- formular zum übermitteln von werten an die session --> <form action="session_demo.php"> Benutzernamen: <input type="text" name="user" /><br /> <input type="submit" /> </form> Michael Kluge Sessions – Sicherheit von Sessions Session liegt als Klartext auf dem Server – keine sensiblen Daten speichern – auf sauberes Ende der Session achten Wer den Cookie hat kann die Session nutzen – Session-Timeout bei Inaktivität – Zusätzliche Prüfung von IP-Adresse Sessions entweder mit Cookies – manche Nutzer deaktivieren Cookies – manche Browser können keine Cookies oder: mit "hidden" Formularfeldern Michael Kluge Sessions – Sicherheit (.htaccess) Zugriffsschutz auf Verzeichnisse und Dateien Überschreiben von Webserver Einstellungen möglich Muss über AllowOverride in der Webserver Konfiguration erlaubt sein Mögliche Optionen sind Fehlerseiten Passwortschutz Zugriffsschutz auf IP-Ebene Michael Kluge Sessions – Zugriffsschutz und mehr # .htaccess-Datei AuthType Basic AuthName "Gesicherter Bereich" AuthUserFile /srv/www/htdocs/zih01/.htpasswd Require user hans peter # BenutzerDatei für Web-Projekt (.htpasswd) manfred:69gY8YPjQXeN6 hans:INUnlKdkNZ6RQ peter:IN20ffIEEV1H6 > htpasswd -c .htpasswd paula New password: Re-type new password: Adding password for user paula Michael Kluge Sessions – Sicherheit Zugriffsschutz und mehr # einschränkung der erlaubten ip adressen Order deny,allow Deny from .aol.com Deny from 192.168 Allow from 141.30.63.42 # verzeichnisspezifisches HTML-Fehlerdokument ErrorDocument 404 fehler404.htm # seite nicht gefunden ErrorDocument 403 fehler403.htm # zugriff verweigert ErrorDocument 500 fehler500.htm # interner server fehler Michael Kluge Sessions – Sicherheit (HTTPS) Kommunikation über verschlüsselten Kanal Client und Server legen zu Beginn die Art der Verschlüsselung fest Server identifiziert sich selbst mit einem Zertifikat Zertifikate werden von Autorisierungsinstanz beglaubigt (z.B. TU Dresden, ZIH hat seit kurzem eine im DFN) Daten von Formularen und .htaccess ohne https gehen immer unverschlüsselt über das Netz also auch Passwörter Michael Kluge