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