SLL Verbindung fürs Backend

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

SLL Verbindung fürs Backend

Beitrag von Beleuchtfix »

Hallo, es wurde immer wieder angefragt, ob man nicht ins Backend per SSL Verbindung gehen kann bzw. jemanden dazu zwingen kann.

Änderungen von emergence sind integriert

Ich habe jetzt die index.php im contenido-Verzeichnis umgewandelt, so dass bei Bedarf automatisch eine SSL (https:) Verbindung aufgebaut wird. Der Bedarf wird in der config.php geregelt.

Vielleicht ist es die Änderung wert, mit übernommen zu werden.
.../contenido/index.php

Code: Alles auswählen

<?php

/*****************************************
* File      :   main.php  // index.php!
* Project   :   Contenido
* Descr     :   Contenido main file
*
* Authors   :   Olaf Niemann
*               Jan Lengowski
*
* Created   :   20.01.2003
* Modified  :   23.01.2003  11.2.2006  Florian Behrendt
*                           SSL Verbindung abfragen
*
* © four for business AG, www.4fb.de
******************************************/

include_once ('./includes/startup.php');

/*' Eine SLL Verbindung aufbauen.' */
/* zuerst Test ob $ssl_required true ist  */

// if ($ssl_required == true) {
if ($cfg["ssl_required"] == true) { 
 if (getenv('HTTPS') != 'on'){ // Nur SLL Verbindung erlaubt!
  
  $url = getenv('SCRIPT_URI');
  $urlneu = ereg_replace ("http://" ,"https://", strtolower($url));
  header ("location: $urlneu");
  die;
  }
  ;} // if ssl_required



cInclude ("includes", 'functions.i18n.php');

cInclude ("classes", 'class.xml.php');
cInclude ("classes", 'class.navigation.php');
cInclude ("classes", 'class.template.php');
cInclude ("classes", 'class.backend.php');

cInclude ("includes", 'cfg_sql.inc.php');


page_open(
    array('sess' => 'Contenido_Session',
          'auth' => 'Contenido_Challenge_Crypt_Auth',
          'perm' => 'Contenido_Perm'));

i18nInit($cfg["path"]["contenido"].$cfg["path"]["locale"], $belang);

cInclude ("includes", 'cfg_language_de.inc.php');
cInclude ("includes", 'functions.general.php');
cInclude ("includes", 'functions.forms.php');

$sess->register("belang");

// Create Contenido classes
$db  = new DB_Contenido;
$tpl = new Template;



// Sprache wechseln
if (isset($changelang) && is_numeric($changelang)) 
{ 
    $lang = $changelang;
}


// change Client
if (isset($changeclient) && is_numeric($changeclient)){
     $client = $changeclient;
     unset($lang);
}

if (!is_numeric($client) || $client == "") {
    $sess->register("client");
    $sql = "SELECT idclient FROM ".$cfg["tab"]["clients"]." ORDER BY idclient ASC";
    $db->query($sql);
    $db->next_record();
    $client = $db->f("idclient");
} else {
    $sess->register("client");
}
    
if (!is_numeric($lang) || $lang == "") {
    $sess->register("lang");
    // search for the first language of this client
    $sql = "SELECT * FROM ".$cfg["tab"]["lang"]." AS A, ".$cfg["tab"]["clients_lang"]." AS B WHERE A.idlang=B.idlang AND idclient='$client' ORDER BY A.idlang ASC";
    $db->query($sql);
    $db->next_record();
    $lang = $db->f("idlang");
} else {
	$sess->register("lang");
}

$perm->load_permissions();


if (isset($area)) {
    $sess_area = $area;
} else {
    $area = (isset($sess_area)) ? $sess_area : 'login';
}

$tpl->reset();

$tpl->set('s', 'HEADER',    $sess->url('header.php?changelang='.$lang.'&changeclient='.$client));
$tpl->set('s', 'CONTENT',   $sess->url('frameset.php?area=mycontenido&frame=1&menuless=1&changelang='.$changelang.'&lang='.$lang.'&client='.$client));
$tpl->set('s', 'VERSION', $cfg["version"]);
$tpl->set('s', 'CONTENIDOPATH', $cfg["path"]["contenido_fullhtml"]."favicon.ico");
$tpl->generate($cfg['path']['templates'] . $cfg['templates']['frameset']);

page_close();

?>
Ergänzung in der .../contenido/includes/config.php

Code: Alles auswählen

/* SLL Verbindung erforderlich  */
$cfg['ssl_required'] = true; // false
Man bräuchte eigentlich nur noch beim Setup diese Variable setzen.

Gruß
Florian
Zuletzt geändert von Beleuchtfix am Di 14. Feb 2006, 13:21, insgesamt 1-mal geändert.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

hmm...

anstelle von $ssl_required würd ich eine $cfg variable verwenden
zb

Code: Alles auswählen

$cfg['ssl_required'] = true; // false
und ich hätte vermutlich keinen meta tag generiert sondern die php funktion location verwendet... (wenn ich das benötigt hätte)
*** make your own tools (wishlist :: thx)
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

Danke, ich schaus mir einmal an. (Ich bin immer froh, wenn ich die Funktionen finde, die ich brauche, wenn ich dann noch eine bessere Funktion finde, dann habe ich schon wieder etwas gelernt).

Gruß
Florian
Darth-Vader
Beiträge: 661
Registriert: So 25. Jan 2004, 19:06
Wohnort: Stuttgart-Bad Cannstatt
Kontaktdaten:

Beitrag von Darth-Vader »

Öhm, könnte man das nicht auch einfach mit mod_rewrite lösen? :roll:

Hab da mal schnel was gebastelt aber nicht getestet:

Code: Alles auswählen

#Force https for Backend
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} ^/contenido/index.php
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Den Code dann einfach in eine Datei mit Namen ".htaccess" im Verzeichnis ../contenido/ speichern.


( Quelle: http://forum.domainfactory.de/forum/arc ... 38133.html bzw. google.de ;) )


so long,

Darth.
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

Wahrscheinlich auch, doch ist mod_rewrite ein rotes Tuch für die meisten hier. Geht es auch bei anderen Servern als Apache?
Wenn man die 10 (optimierten) Zeilen von Anfang an in die front_content.php integriert kann sich jeder das als Einstellung einfach erstellen.

Im optimalen Fall könnte man das beim Setup auch festlegen und gleich die Pfade zum WYSIWYG richtig setzen.

Gruß
Florian
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

das mit .htaccess ist auch ne feine lösung..
nur geht das nicht auf iis (soll jetzt nicht heissen das ich gerne iis verwende...)

es gibt da noch ein paar andere ding die man vielleicht beachten sollte...
getenv('HTTPS') steht nicht immer zur verfügung (abhängig von der server konstellation) und manchmal steht auch nicht on drinnen...

bei manchen provider gibts gar keinen zugriff auf $_ENV ...
was ja auch ein nettes aha erlebniss bei mir ausgelöst hat... :motz:

dann hätte man ne endlosschleife...

na wie auch immer...
*** make your own tools (wishlist :: thx)
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

Schade, dann haben wir hier zwar verschiedene "Einzellösungen" aber eben noch nicht das Universalergebnis.
Florian
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

naja universal lösung die immer läuft ist so ne sache...
man findet immer was man nicht beachtet hat...
*** make your own tools (wishlist :: thx)
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

Ich habe Deine Vorschläge oben im Code übernommen.
Was ist der Vorteil von location. Ich musste da den Hinweis auf die Umleitung nämlich streichen, weil schon ein Header gesendet wurde?
Florian
Darth-Vader
Beiträge: 661
Registriert: So 25. Jan 2004, 19:06
Wohnort: Stuttgart-Bad Cannstatt
Kontaktdaten:

Beitrag von Darth-Vader »

eija, jedem wie es beliebt.
Ich mach das bei mir über htaccess. Wobei ich bei mir einfach folgendes in die httpd.conf (naja in wirklichkeit in die config der ssl-virtualhosts, bei apache2 is ja alles aufgesplittet) eingefügt habe:

Code: Alles auswählen

<Directory /ABSOLUTER PFAD ZUR SITE/contenido>
    SSLRequireSSL
</Directory>
Das geht halt eben nur bei Rootservern, bzw Servern bei denen man Schreibzugriff auf die config-files von Apache hat.
Und da Apache ca. 90% Marktanteil hat und ich selbst nichts anderes benutze kümmere ich mich nicht um die andern Webserver-varianten. :twisted:
Vorteil ist halt eben, dass es um einiges kürzer ist und ich nicht im code vom Layout und/oder Contenido rumbasteln muss... ;)


Wer was am Ende benutz ist seine Sache. Es gibt nie DIE Universallösung und schon garnicht in der IT, die mitunter die breiteste Wissenschaft ist... ;)
Zuletzt geändert von Darth-Vader am Di 14. Feb 2006, 13:27, insgesamt 1-mal geändert.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

es ist nur ne andere form des redirects... die aber immer funktioniert...
soweit ich weiss gibts browser einstellungen die meta weiterleitungen unterbinden können...
*** make your own tools (wishlist :: thx)
Antworten