Willkommen, Gast ( Anmelden | Registrierung )     [ Hilfe | Mitglieder | Suche ]

 
Reply to this topicStart new topic
> SSL, mod_rewrite und der base href tag
burnme
Beitrag Sun. 1. June 2008, 17:52
Beitrag #1


Member
**

Gruppe: Members
Beiträge: 10
Mitglied seit: 16.03.2007
Mitglieds-Nr.: 735



Wie in diesem Thread beschrieben, gibt es probleme, wenn mod_rewrite aktiviert ist, und die Seite per SSL verschlüsselt werden soll.
Aufgrund des base href tag zeigen entweder alle links auf die unverschlüsselte Seite, oder nicht verschlüsselter content (bilder, css)
wird geladen.

Ich habe mir gedacht, wenn schon mit beschäftigen, warum nicht gleich nen ganzen Hack für Sefrengo draus machen?
So war meine Überlegung:
Im backend wird bei "Basepath bei UrlRewrite=2" die adresse ohne "http://" eingegeben (könnte man evtl. auch mit substr() filter),
dafür dann in der Codeausgabe variabel hinzugefügt.

Wenn also $_SERVER['HTTPS'] == "1" oder "on" ist, wird https:// eingesetzt,
falls $_SERVER['HTTPS'] == "0" oder "off" ist, wird http:// eingesetzt.

Damit entscheidet der Benutzer, ob es eine Seite verschlüsselt haben will.
Also habe ich in der inc.generate_code.php Zeile 118:

CODE
$code .= '<CMSPHP> if ($cfg_client[\'url_rewrite\'] == \'2\') echo \'<base href="\'.htmlspecialchars(str_replace(\'{%http_host}\', $_SERVER[\'HTTP_HOST\'], $cfg_client[\'url_rewrite_basepath\']), ENT_COMPAT, \'utf-8\').\'"'.$sf_slash_closing_tag.'>\'."\n"; </CMSPHP>';


ersetzt durch:

CODE
$code .= '<CMSPHP> if ($cfg_client[\'url_rewrite\'] == \'2\') { if(isset($_SERVER[\'HTTPS\']) && ($_SERVER[\'HTTPS\'] == \'1\' || strtolower($_SERVER[\'HTTPS\'])==\'on\')) { echo \'<base href="https://\'.htmlspecialchars(str_replace(\'{%http_host}\', $_SERVER[\'HTTP_HOST\'], $cfg_client[\'url_rewrite_basepath\']), ENT_COMPAT, \'utf-8\').\'"'.$sf_slash_closing_tag.'>\'."\n"; }else{ echo \'<base href="http://\'.htmlspecialchars(str_replace(\'{%http_host}\', $_SERVER[\'HTTP_HOST\'], $cfg_client[\'url_rewrite_basepath\']), ENT_COMPAT, \'utf-8\').\'"'.$sf_slash_closing_tag.'>\'."\n"; } } </CMSPHP>';



Ein erster, lokaler, nicht produktiver Test schien zu funktionieren, als ich https://domain.tld eingab, war der base href tag auch https://,
und nur http:// war der base href tag auch http://


So kann ich vorschreiben, welche Seiten verschlüsselt werden sollen;
und wenn der Benutzer variabel anstatt "http" https:// eingibt, wird er durch den base href tag nicht wieder auf
die unverschlüsselte seite weitergeleitet.

Könnt ihr das mal testen? Funktioniert der Hack bei euch?
Habe ich irgend einen generellen Denk - Fehler gemacht?
Wird der basepath noch irgendwo anders benötigt, wo das einen Fehler verursachen würde?
Bisschen Feedback wäre nett...

Der Beitrag wurde von burnme bearbeitet: Sun. 1. June 2008, 18:19
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 28.3.24 - 18:35

Sefrengo ist ein eingetragenes Markenzeichen und urheberrechtlich geschützt.
Copyright 2009 Design & Daten, Alle Rechte vorbehalten.