Scratchbook

Das Leben ist immer anders als die Realität.

Jedem Keks sein Geheimnis

Claude, 13. Juli 2005, 09:51 Uhr

Warning: Use of undefined constant ri_rand_compare - assumed 'ri_rand_compare' (this will throw an Error in a future version of PHP) in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/random-image-widget/random_image.php on line 129 Warning: Use of undefined constant ri_rand_compare - assumed 'ri_rand_compare' (this will throw an Error in a future version of PHP) in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/random-image-widget/random_image.php on line 130 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700 Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707 Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700 Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707

1105.jpg

Ich habe lange überlegt, ob ich nicht doch ein Login mit einem Cookie implementieren soll. Natürlich kann dies eine Sicherheitslücke darstellen – doch es gibt auch Vorteile.

Was ist überhaupt ein Cookie?

Ein Cookie (am. englisch Plätzchen, Keks) ist ein kurzer Eintrag in einer meist kleinen Datenbank auf einem Computer und dient dem Austausch von Informationen zwischen Computerprogrammen oder der zeitlich beschränkten Archivierung von Informationen.

Doch diese Beschreibung ist mir zu allgemein. Wenn wir von Cookies im Zusammenhang mit dem Internet reden, meinen wir eine kleine Textdatei mit einer Information drin, die der Browser irgendwo ablegt.

Mit einem Cookie ist es also möglich, Informationen für eine gewisse Zeit zwischenzulagern, auch dann, wenn der Browser geschlossen wird. Viele Foren, Gästebücher etc. machen oft davon Gebrauch, um z.B. Login-Informationen in einem Cookie abzulegen, so dass der Benutzer nicht immer sein Passwort eingeben muss. DER GROSSE NACHTEIL: Wird das Cookie gestohlen, kann sich der Angreifer als fremden Benutzer einloggen, ohne dessen Passwort zu kennen.

Es ist wohl klar, dass ich eine solch unsichere Methode sicher nicht implementieren werde. Stattdessen habe ich nach einer Lösung gesucht, die trotz des hohen Komforts auch noch einigermassen sicher ist. Folgendes ist dabei herausgekommen:

1105-2.jpg

SSC – Session Secret Cookie

Ihr habt nun also folgende Möglichkeit, euch auf dem Weblog einzuloggen: Entweder per User/Pass Kombination, oder mit einem Cookie.
Jetzt muss noch definiert werden, welcher Benutzer wohl der „richtigere“ ist: Derjenige, der sein Passwort kennt oder der mit dem Cookie? Richtig, der mit dem Passwort. Logins mit einem Cookie sind also nicht vertrauenswürdig.
Das obige SSC-Verfahren (yeah, nobody has done it before, it’s my invention!) funkioniert im Prinzip so: Jedesmal, wenn sich der User (Bob) mit seinem Passwort anmeldet (vertrauenswürdig), wird ein Geheimnis auf dem Server festgelegt – unabhängig davon, ob er Cookies will oder nicht.

Akzeptiert er Cookies, wird dieses Geheimnis als Cookie beim Benutzer abgelegt. Von nun an kann er sich ohne Passwort einloggen, mit anderen Worten: Er ist theoretisch immer online. Cool, gleich zwei Fliegen auf einen Streich: Verabschiedet euch von den nervigen Session-Timeouts; läuft die Session ab, seid ihr schwuppsdiwupps per Cookie wieder online!

Der Server prüft bei jedem Klick folgendes:

1105-3.jpg

Nur das Geheimnis überprüfen, wenn das Cookie gesetzt ist, wäre sinnlos. Der Angreifer kann das Cookie löschen, und bleibt online, auch wenn das Geheimnis geändert wird. Somit wird bei einem Cookie-Login das Geheimnis zusätzlich in die Session registriert.
Session: Ein Servergespeichertes Cookie (Session-Cookie), das der Benutzer nicht von Hand ändern kann. Er kann nur sagen: „Mir gehört die Session 0541a2427ae590184115cbe821b0f479“. Und wenn er das nicht sagen tut, wird er ausgeloggt!

Nun kann der Angreifer sich mit Bob’s Cookie einloggen. Er kann es von mir aus auch wieder löschen.
Egal was er mit dem gestohlenen Cookie macht: Loggt sich Bob mit seinem Passwort ein, wird das Geheimnis geändert, und der Angreifer wird beim nächsten Klick ausgeloggt und sein Cookie ungültig. Ihm bleibt nichts anderes übrig als ein 32-stelliger nutzloser Zahlensalat.

Es ist also von Vorteil, sich von Zeit zu Zeit mit Passwort einzuloggen, damit das Geheimnis geändert wird.

Cookies sind übrigens nicht die einzige Komfortsteigerung; Postet doch mal ein neues Blog und schaut wie komfortabel das jetzt geht!

Capt. Crakkstuh

gibs doch zue. de fhbb student wo bi euch in coop zu 40% als netzadmin schafft hett dr e tipp geh 😉

Longneck

de Thomas Winter? Nöö, dä isch nur am Donnstig & Fritig do.

Und dä chunt denn amigs mi cho froge wäge PHP 😉

Capt. Crakkstuh

;))))))

er hett vrzellt er hett sone börsespkulant-by-php für sone game gschriebe… absolut freaky. aber de siech isch dufte. hilft immer wenn mir am billard spiele sind *g* co-assistanz

Longneck

jäjä de winti…

mir het er au scho sone site zeigt für guild wars, wo azeigt wo sich NPCs ufhalte mithilf vo dr grafik-library vo php. isch no cool!

hüt sött er glaubs wider do si, denn chönnemer wider fachsimple – er sitzt jo grad 5m nebe mir :))

Capt. Crakkstuh

heheheheeheheheheeeee, seischem e gruess gelle

Warning: count(): Parameter must be an array or an object that implements Countable in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/themes/scratchbook/navigation_bar_bottom.php on line 1