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?
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?