Session ID unsichtbar übergeben

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

Session ID unsichtbar übergeben

Beitragvon BillieJoe90 » 17.02.2006 15:29

Hallo,
gibt es eine Möglichkeit, aus mod_rewrite heraus die Session-ID an eine umgeschriebene URL anzuhängen? In den mod_rewrite-Variablen hier auf der Seite habe ich keine Session-Variable gefunden.
Das muss doch möglich sein, denn anders müsste man sie sichtbar im Browser übergeben und man müsste sie umständlich an jeden Link anhängen... Außerdem kann man ja sonst auf fast alle Variablen des Servers von mod_rewrite aus zugreifen!

Meine .htacces:
Code: Alles auswählen
RewriteEngine on
RewriteBase /
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)/(.*)/$   /redirect.php?band=$1&var1=$2&var2=$3&var3=$4&var4=$5  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)/(.*)$   /redirect.php?band=$1&var1=$2&var2=$3&var3=$4&var4=$5  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)/$   /redirect.php?band=$1&var1=$2&var2=$3&var3=$4  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)$   /redirect.php?band=$1&var1=$2&var2=$3&var3=$4  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/$  /redirect.php?band=$1&var1=$2&var2=$3  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)$  /redirect.php?band=$1&var1=$2&var2=$3  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/$  /redirect.php?band=$1&var1=$2  [L]
RewriteRule   ^([^+]*)-([^/-]+?)$  /redirect.php?band=$1&var1=$2  [L]


Ich hoffe, ihr könnt mir weiterhelfen!

Gruß

Johannes
Was ist 10 Meter lang und hat keine Scharmhaare?
Die erste Reihe beim Avril Lavigne Konzert

GreenDayNET.de
BillieJoe90
.
.
 
Beiträge: 16
Registriert: 14.07.2005 00:28

Beitragvon Bob » 17.02.2006 15:42

Nur über Cookies kannst du die Session dann noch erhalten, wenn sie nicht in der URL auftauchen soll.
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Beitragvon BillieJoe90 » 17.02.2006 16:30

Danke für deine Antwort.
Meine htaccess sieht nun so aus:
Code: Alles auswählen
RewriteEngine on
RewriteBase /
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)/(.*)/Session-(.*)$   /redirect.php?band=$1&var1=$2&var2=$3&var3=$4&var4=$5&PHPSESSID=$6  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)/Session-(.*)$   /redirect.php?band=$1&var1=$2&var2=$3&var3=$4&PHPSESSID=$5  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/Session-(.*)$  /redirect.php?band=$1&var1=$2&var2=$3&PHPSESSID=$4  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/Session-(.*)$  /redirect.php?band=$1&var1=$2&PHPSESSID=$3  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)/(.*)/$  /redirect.php?band=$1&var1=$2&var2=$3&var3=$4&var4=$5  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)/(.*)$  /redirect.php?band=$1&var1=$2&var2=$3&var3=$4&var4=$5  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)/$   /redirect.php?band=$1&var1=$2&var2=$3&var3=$4  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/(.*)$   /redirect.php?band=$1&var1=$2&var2=$3&var3=$4  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)/$  /redirect.php?band=$1&var1=$2&var2=$3  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/([^/]+)$  /redirect.php?band=$1&var1=$2&var2=$3  [L]
RewriteRule   ^([^+]*)-([^/-]+?)/$  /redirect.php?band=$1&var1=$2  [L]
RewriteRule   ^([^+]*)-([^/-]+?)$  /redirect.php?band=$1&var1=$2  [L]


Ich hänge die Session an, indem ich schreibe "/Session-{session_id}"
Klappt auch.
Nur das Problem: Wenn ein User die Adresse samt deer Session-ID kopiert und in irgendeinem Forum oder so verlinkt, können ja alle für die nächsten 30 Minuten sein Passwort anschauen oder Persöhnliche Nachrichten lesen, ohne auch nur irgendein Passwort oder so eingegeben zu haben. Das wäre verdammt scheiße...
Deswegen verstehe ich nicht, wie sowas mit mod_rewrite nicht lösbar ist. mod_rewrite kann doch auch auf andere Sachen zugreifen, die ihm nicht übergeben wurden. Wie kann ich das Problem lösen?
Was ist 10 Meter lang und hat keine Scharmhaare?
Die erste Reihe beim Avril Lavigne Konzert

GreenDayNET.de
BillieJoe90
.
.
 
Beiträge: 16
Registriert: 14.07.2005 00:28

Beitragvon Bob » 17.02.2006 16:40

. mod_rewrite kann doch auch auf andere Sachen zugreifen, die ihm nicht übergeben wurden
Wo nichts da ist, kannst du auch nichts einfügen. z.B.? Auf welche Sachen willst du da zugreifen können bzw. auf was, was nicht vorhanden ist, kann mod_rewrite dennoch zugreifen?

Wenn ein User die Adresse samt deer Session-ID kopiert und in irgendeinem Forum oder so verlinkt, können ja alle für die nächsten 30 Minuten sein Passwort anschauen oder Persöhnliche Nachrichten lesen,
Was bei cookies nicht der Fall wäre.
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Beitragvon BillieJoe90 » 18.02.2006 10:51

Caterham hat geschrieben:
. mod_rewrite kann doch auch auf andere Sachen zugreifen, die ihm nicht übergeben wurden
Wo nichts da ist, kannst du auch nichts einfügen. z.B.? Auf welche Sachen willst du da zugreifen können bzw. auf was, was nicht vorhanden ist, kann mod_rewrite dennoch zugreifen?

Kann sein, dass ich da was falschj verstehe, aber was ist damit?

%{HTTP_ACCEPT} Vom Client akzeptierte Medientypen, z.B. "text/plain".
%{HTTP_COOKIE} Im Client gesetzte Cookies.
%{HTTP_HOST} Domain-Name des abgefragten Hosts.
%{HTTP_REFERER} Referer. Darf leer sein.
%{HTTP_USER_AGENT} Client.
%{QUERY_STRING} Übergebener Anfrage-String. (GET-Formulare)
%{REMOTE_ADDR} IP-Adresse des Besuchers.
%{REMOTE_HOST} Domain-Name des Besuchers (z.B. dip.t-dialin.net).
%{REMOTE_USER} Benutzername des Besuchers. Nach Identifizierung.
%{REQUEST_URL} Die angeforderte URL.
%{REQUEST_FILENAME} Name der vom Client angeforderten Datei (icl. Ordnernamen).
%{SERVER_ADDR} IP des Servers.
%{TIME_DAY} Datum: Tag
%{TIME_MON} Datum: Monat
%{TIME_YEAR} Datum: Jahr
%{TIME_HOUR} Datum: Stunde
%{TIME_MIN} Datum: Minute
%{TIME_SEC} Datum: Sekunde
%{ENV:PATH} "$PATH" aus Apache.
%{HTTP:CONNECTION} "Connection:" aus dem HTTP-Header.
Was ist 10 Meter lang und hat keine Scharmhaare?
Die erste Reihe beim Avril Lavigne Konzert

GreenDayNET.de
BillieJoe90
.
.
 
Beiträge: 16
Registriert: 14.07.2005 00:28

Beitragvon Bob » 18.02.2006 12:44

%{TIME_DAY} Datum: Tag
%{TIME_MON} Datum: Monat
%{TIME_YEAR} Datum: Jahr
%{TIME_HOUR} Datum: Stunde
%{TIME_MIN} Datum: Minute
%{TIME_SEC} Datum: Sekunde
sind Server-Variablen und geben die akt. Uhrzeit des Servers wieder, der Rest sind Variablen, wie sie vom Browser im HTTP-Request übermittelt werden oder im Core entstehen (REQUEST_FILENAME z.B.).
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Lösungsansatz (Workaround)

Beitragvon typ » 20.04.2006 23:51

Nur das Problem: Wenn ein User die Adresse samt deer Session-ID kopiert und in irgendeinem Forum oder so verlinkt, können ja alle für die nächsten 30 Minuten sein Passwort anschauen oder Persöhnliche Nachrichten lesen, ohne auch nur irgendein Passwort oder so eingegeben zu haben.


Speicher in der Session die IP des Users und überprüfe eine Änderung dieser am Anfang des Programms.
Sollte sich diese geändert haben, wird dem User mitgeteilt, dass aus Sicherheitsgründen die Session geschlossen wurde. Dies sei im Sinne des Users und eine anschliessende Belehrung wäre Sinnvoll.

Ich denke, das ist mit den derzeitigen technischen Möglichkeiten die annehmbarste Lösung, wenn man auf Cookies verzichten muss/will. Um höhere Sicherheit zu gewährleisten, könnte man noch SSL hinzuziehen.
typ
.
.
 
Beiträge: 1
Registriert: 20.04.2006 23:40


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron