SSL, Session, 1&1 = Problem?

String

Erfahrenes Mitglied
Hallo zusammen,

ich habe einen 1&1-Server mit SSL-Zertifikat. Jetzt habe ich einen kleinen online-shop bei dem es dem kunden natürlich möglich ist, sachen in den Warenkorb zu packen. Das ganze gedöhne ist solange unverschlüsselt, wie es keine Kundendaten gibt, also solange der Kunde nicht eingeloggt ist oder als Gast bestellt.

Allerdings, wenn ich das SSL zertifikat nutzen will, muss ich ssl.kundenserver.de/MEINEDOMAIN benuzten. Nun habe ich dann natürlich keinen zugriff mehr auf Session und Cookies oder sehe ich das falsch? Bleibt mir da nichts anderes übrig, als die Warenkorb ID und die Kundendaten per URL zu übertragen (wäre natürlich ziemlich ******).

Irgendwie fällt mir gerade nicht so ganz ein, wie ich das nun sicher realisiere. Bin also für jeden Vorschlag dankbar :)

string
 
Hallo,

ich bin Programmierer eines Onlineshop-Systems. Wir haben das Ganze in etwa so gelöst:
Beim Wechsel von NONSSL zu SSL wird die SessionID als Parameter in der URL übergeben, damit die SSL Seite die Session übermittelt bekommt (NONSSL und SSL laufen wie von dir genannt meist auch auf 2 verschiedenen URLs).

Sofern SSL-Cookies möglich sind, verschwindet die SessionID beim zweiten Klick im SSL-Bereich. Ansonsten wird bei jeden Seitenaufruf die SessionID per Parameter übergeben (im NONSSL-Bereich ebenfalls, wenn Cookies vom Browser nicht akzeptiert werden).

Beim Wechsel von SSL zu NONSSL wird ebenfalls wieder die SessionID per Parameter übergeben.

mfg aGeNET
 
Das wäre ja die möglichkeit mit den Parametern. Ungerne, aber mir ist leider auch nichts besseres eingefallen.

Kann ich denn dann auf die Sessionvars zugreifen, wenn ich die Session per URL übergeben habe?

Wie lösen das denn die ganz großen?
 
Hi,

das Problem ist der Domainwechsel beim SSL-switch, der quasi voraussetzt, das die SessionID per Parameter übergeben wird. Sonst kann man nicht auf die Session-Daten zugreifen. Das ist vorallem dann der Fall, wenn Cookies aktiviert und benutzt werden. Wie du sicher weißt, sind Cookies immer auf die jeweilige Domain bezogen, die sich hier ja ändert. Wenn Cookies deaktiviert sind, muss die SessionID eh immer mit übergeben werden.

Eine andere Alternative wären datenbankbasierte Sessions, damit kenne ich mich aber nicht aus.

mfg aGeNET
 
Aber ist es nicht so, dass selbst wenn ich die Session als GET übergebe, ich nicht auf die Variablen in der Session auf dem anderen Server zugreifen kann..?

Weil irgendwie läuft das aktuell nicht so ganz wie ich gerne hätte. Selbst wenn ich die Session alla link.php?<?=session_name();?>=<?=session_id();?> übergebe, kommt nichts an.

String
 
Hi,

mir ist da noch was eingefallen, woran ich heut Nachmittag nich gedacht habe.
Wir nutzen in unserem System nicht den von PHP vorgegebenen tmp-Ordner, sondern einen eigenen, in dem die Sessions gespeichert werden.

Damit lässt sich der Session-Transfer zwischen NONSSL und SSL gut umsetzen.
Ein eigener tmp-Sessionspeicher lässt sich über http://de.php.net/session_save_path realisieren.

Des Weiteren musst du prüfen, ob sich die Seite im SSL- oder NONSSL-Modus befindet und eine Fallunterscheidung machen.

kurzes Beispiel:
PHP:
// SSL/NONSSL-Modus abfragen:
if (isset($_SERVER['HTTPS'])) {
	$request_type = ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == '1') ? 'SSL' : 'NONSSL';
} else {
	if ((HTTPS_SERVER!='') && (substr($_SERVER["SCRIPT_URI"], 0, 8) == 'https://')) {
		$request_type =  'SSL';
	} elseif((HTTPS_SERVER!='') && (str_replace("https://", "", HTTPS_SERVER) == $_SERVER["HTTP_X_FORWARDED_HOST"])) {
		$request_type =  'SSL';
	} else {
		$request_type =  'NONSSL';
	}
}

// Domain und Pfade je nach Modus
$cookie_domain = (($request_type == 'NONSSL') ? HTTP_COOKIE_DOMAIN : HTTPS_COOKIE_DOMAIN);
$cookie_path = (($request_type == 'NONSSL') ? HTTP_COOKIE_PATH : HTTPS_COOKIE_PATH);

// Sessionspeicher
session_save_path($_SERVER['DOCUMENT_ROOT'].'/tmp/'); // zb
session_set_cookie_params(0, $cookie_path, $cookie_domain);
session_start();

Hier werden diverse Defines genutzt, die aus einem configfile kommen.
HTTPS_SERVER - Url im SSL-Modus
HTTP(S)_COOKIE_DOMAIN - Domain für SSL/NONSSL-Modi
HTTP(S)_COOKIE_PATH - Pfad für SSL/NONSSL-Modi (wenn es keine Unterordner gibt dann / Slash nutzen)

mfg aGeNET
 
Zuletzt bearbeitet:
Hallo nochmal,

also ich habe es jetzt hinbekommen. Ich übergebe jetzt auf der SSL-Seite (geürpft ob SSL wird wie von agenet vorgeschlagen, danke :) ) ob die Seite die ERSTE SSL-Seite ist, die der User aufruft. Dort wird geprüft, ob die Session mit übergeben wurde, und wenn ja, wird diese genutzt.

Die zuweisung klappt jetzt. Ist eigentlich relativ einfach, aber darauf muss man erstmal kommen *G*

Ich stell das Thema jetzt mal auf erledigt, wenn ihr noch irgendwelche bedenken / vorschläge habt, sicherheitsbedenken, ändere ich das gerne wieder :)

string
 
Hallo,

nur so als (ernstgemeinte) Frage: Was spricht dagegen, den Shop unabhängig vom Log-Status von der ersten Seite an über https abzuwickeln?

Greetz
cw
 
Zwei Stichworte:
Serverlast, Domain

Serverlast erhöt sich unnötig (bei mehrere millionen seitenaufrufe im monat doch spürbar, gerade zu den hauptzeiten), Die Domain ist extrem unschön in meinem fall (ssl.kundenserver.de/meinedomain) ist nicht gerade anschaulich und wirkt bei posts in foren ect. eher unprofessionell.

Und:
Was hat man davon, ausser einer langsameren Verbindung, wenn eine vollkommen uninteressante Verbindung verschlüsselt wird?
 
Zurück