Philipp Hasenfratz: / (JAVASCRIPT): Caching-Probleme (bei auto-refresh, server-push simulieren)

Beitrag lesen

Halihallo Andreas

Ich halte den Traffic ebenfalls nicht für so problematisch, wie der
erhebliche Aufwand der Scripte. Aber liesse sich diese
Authentifizierung und Überprüfung nicht irgendwie in eine Session
abbilden? - Also: Session einmal eröffnet, ist alles überprüft und es
muss nur noch die Session-Authentizität sichergestellt werden?

Es gibt 2 Probleme:

  1. wie stelle ich die Session-Authentizität denn sicher?

Durch Prüfung ob eine Session-ID übergeben wurde wäre wohl etwas - na sagen wir mutig ;-) Prüfung ob es im TMP-Verzeichnis eine Datei mit der Session-ID als Namen gibt (bzw. so wie PHP das eben speichert, ich glaub das war sess_[SID]), wobei ich mich hier auf den GC verlassen müsste, das heißt ich habe mit Sicherheit auch ungültige/abgelaufene Sessions da liegen. In jedem Fall muss man sicherstellen dass die Session-Daten in einem eigenen Verzeichnis / DB liegen, und nicht mit den Daten anderer vhosts kollidieren, wie es out-of-the-box der Normalfall ist.

Dieses Problem liesse sich im Normalfall einfach beheben:
Es wird eine Datei sess_<Session-Id>_<Session-Key> angelegt. Über
mod_rewrite z.B. wird dann die Session-Id, Session-Key aus dem
Request ausgelesen und auf die Datei mit -f getestet.

Wichtig ist einfach, dass die Session nur erstellt wird, wenn die
Authentifizierung sichergestellt ist. Das wegen dem abgelaufen, nun
ja, hier müsste man bei jedem Session-Ende die Datei wieder
löschen...

Mir ist schon klar, dass das Aufwand gäbe.

  1. In der Software gibt es eben Bereiche, auf die nicht jeder User zugreifen darf.

Vergleichbar mit einem Forum, wo nur bestimmte User Admin-Rechte haben. Wie willst Du jetzt diese Admin-User erkennen? Die Information steht in der Session, aber die ist ja eigentlich ein serialisierter PHP-Array. Daher könnte der User die Information im Query-String mitsenden (da habe ich ja direkt Zugriff drauf), ich muss nur gegenprüfen ob das was er da sendet auch korrekt ist. Dies sollte dann mit einer mod_rewrite-Geschichte wie unten erwähnt möglich sein.

Nun, hier fällt mir für die As-Is Lösung nur etwas ein:
An die Datei müssten alle Flags (z.B. ist-Administrator o.ä.) mit
angehängt werden. Beim Request auf den "detector.asis" müssten alle
Flags bekannt sein und auch genau denen der asis-Datei entsprechen,
so dass -f wahl liefert und die Datei ausliefert (Cookie setzt).

Oder anders formuliert: Versucht jemand ohne Admin-Rechte diese zu
erhalten und gibt beim Request admin=1 an, wird -f die Datei nicht
finden und folglich heisst dies, dass er eben keine admin-Rechte hat.

Nun ja, diese Lösung ist natürlich genauso starr wie komplizierend.
Ist also wohl auch kaum das Wahre für dich.

Hm, irgendwie habe ich kein gutes Gefühl dabei mich auf sowas zu verlassen.

Wie gefällt dir dies:

Man sendet stehts ein "404 Not found" zurück. Die Cookies werden
dennoch gespeichert, da diese völlig getrennt vom Content sind
(stehen ja auch im Header).

Funktioniert wunderbar, bis auf den Opera 7, NS4. Dort müsste man
halt wieder eine Zufallszahl anhängen (oder gleich bei allen, hat
keine Auswirkung bzw. nur auf den Traffic).

Vorteil: Der Cache sollte hier eigentlich nicht mehr vollgemüllt
werden, da ja gar keine Ressource gefunden wurde.

Und? Sprachlos? :-)

Diese Seite ist einigermaßen elegant, aber die andere Seite (Erzeugung der Dateien bei Änderung) ist nicht wirklich schön ;-)

Klar.

Ach, die Servergeschichte von mir ist auch in Arbeit,

Das mit dem verteilten System?

Jep.

Aus dem anderen Posting:

Vielen Dank für den Test! (wenn Du den nicht gemacht hättest hätte ich Deine andere Antwort wohl nicht mehr gelesen ;-))

Warum hättest du meine erste Antwort nicht mehr gelesen? *lange-
leitung-hab-heute*

"Die Zeit... Die Zeit ist wie ein Raubtier" ;-)
Ich hatte wenig Zeit und vermute dass der Thread im Archiv verschwunden wäre, hättest Du nicht noch den Test nachgeschoben...

Ach so; kämpfen wir also wiedermal an der selben Front :-)

Viele Grüsse

Philipp