• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Sichere Übertragung der User-ID bzw SessionID mit JS

Elma

New member
Hi.

Ich mache mir gerade nen Kopf über folgendes:

Ich habe eine User-ID, welche ungefähr dem entspricht, was man bei PHP unter Session-ID kennt.
Nur dass ich kein PHP serverseitig verwende, sondern node.js und die Sessions derzeit noch einfach in einem Array gespeichert sind.


Im Gegensatz zum Ablauf bei PHP übertrage ich die ID aber im Seitenquelltext, und lese sie von da aus per JS aus.
Cookies werden nicht benutzt. Es dient lediglich der Eintrag im Meta Tag als "Speicher" bis die Seite geschlossen wird.
Wenn ein User etwas postet, wird die ID dort per JS ausgelesen zusammen mit der Nachricht per JS an den Server gesendet.
Leute ohne aktiviertes JS können nichts posten, da die ID niemals aus dem Meta Tag ausgelesen wird und an einen Post angehangen wird.
Das ist aber erwünscht. Denn ohne JS funktioniert dann auch kein Ajax oder Websckets und dann ist die Sache sowieso hinfällig.
Daher kann man auch JS zur Absicherung der ID vorraussetzen.

Sobald eine User-ID vorhanden ist, kann der User immer wieder erkannt werden bis der Eintrag aus dem Array entfernt wird.
Dank dem Browsercache funktioniert das sogar, wenn der Browser zwischenzeitig geschlossen oder die Seite kurz verlassen wurde.
Um zu verhindern, dass die Seite in Proxys gecached wird und dann an mehrere User die gleiche ID heraus geht, wird die URL dann noch für jede Sitzung mit Random Zeichen versehen.


Problem ist aber: Sollte die ID doch irgendwie an einen anderen User gelangen, kann er im Namen eines anderen Users posten.

Daher würde ich gerne die ID verschlüsseln bzw irgendwie absichern so dass die ID nur von einer Person benutzt werden kann.
Der Schlüssel zum entschlüsseln muss aber auch irgendwie zum Client gelangen.
Jemand der den Datenverkehr mitließt könnte dann trotzdem an die ID gelangen.

IP Binding funktioniert leider nicht, da sonst ein der Wechsel zwischen WLAN und Mobile Data nicht mehr ohne erneutes Login funktioniert.

SSL ist leider derzeit auch keine Option, da ich kein offizielles SSL Zertifikat habe und lieber ohne SSL arbeite als dass beim User eine Sicherheitswarnung wegen selbst-signiertem Zertifikat aufgeht.

Wie könnte man so etwas angehen?
 
Wie könnte man so etwas angehen?
Mit den Randbedingungen - gar nicht.

- - - Aktualisiert - - -

Die einig sinnvolle Variante ist mit SSL/TLS, dann kannst du deine Tokens übertragen, ohne dass sie jemand zwischendurch abfängt.
 
Hi.

Ja das habe ich schon befürchtet. Dann müsste ich wohl oder übel ein Zertifikat kaufen.

Ich hab auch schonmal über den DHM Schlüsseltausch und Blowfish nachgedacht. Aber das ist auch nicht "Proxy Sicher".

Ich habe es nun etwas umgestrickt, so dass das Token nicht mehr mit dem eigentlichen Dokument ausgeliefert wird, sondern per JSONP nachgeladen wird.
Dann kann wenigstens das Hauptdokument gerne vom Proxy gecached werden ohne dass darin das Token ist.
 
Weil ich die Cookies noch nicht eingebaut habe.
Ich werde aber nicht auf HTML Ebene Cookies setzten sondern das auch per JS machen, damit es mit der Cookie Notification einfacher ist.
Wer kein JS hat, sieht auf der Seite ohnehin keine Dynamischen Inhalte, so dass dann auf das Cookie verzichtet werden kann.
 
Normalerweise wird der Cookie ja im HTTP Header gesetzt in dem ein Set-Cookie mit Inhalt übertragen wird.
Man darf aber nicht mehr ohne Erlaubnis des Users ein Cookie setzen.
Also wollte ich diese Erlaubnis einholen und dann gleich per JS den Cookie setzen.
Und nicht erst nochmal eine Rückmeldung an den Server machen um es dann beim nächsten http request zu setzen.

Ich habe vor, über den Webserver nur die "Grundversion" der Webseite und die Statischen Inhalte auszuliefern. Die Dynamischen Inhalte wollte ich per Ajax bzw Websocket von Node.js abholen, Das heißt, die Cookies müssen dann zu node.js geschickt werden und nicht an den eigentlichen Webserver.
 
Man darf aber nicht mehr ohne Erlaubnis des Users ein Cookie setzen.
Ich glaube nicht, dass das so 100%ig korrekt ist. Auf jeden Fall kenne ich einige Seiten, die ein Cookie setzen und dann irgendwo einen Hinweis haben à la "Wir verwendent Cookies - wenn du das nicht willst, verlass unsere Seite".
 
Ja, bestes Beispiel Facebook, die informieren nur und fragen nicht.
Oder man setzt die Cookies erst ab der Login Page.
 
So ein seltsamer Zustand entsteht hald, wenn Leute schlecht informiert politische Entscheidungen treffen...
 
Wobei Cookies ja eigentlich das harmloseste ist. Die anderen Methoden, etwas beim User abzuspeichern sind viel undurchsichtiger.
 
Zurück
Oben