Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: 2.0 - SSL und xtc_href_link.inc.php

    webald

    • modified Team
    • Beiträge: 2.791
    2.0 - SSL und xtc_href_link.inc.php
    am: 29. April 2016, 09:44:39
    Ich bin gerade etwas am Zweifeln, ob in /inc/xtc_href_link.inc.php die Prüfung auf SSL falsch ist.

    In der application_top.php wird geprüft, ob per https auf den Shop zugegriffen wird, unabhängig von der Einstellung in ENABLE_SSL.

    In der /inc/xtc_href_link.inc.php wird aber auf ENABLE_SSL zurückgegriffen, mit der Folge, dass trotz Seitenaufrufs mit https unsicherer Inhalt geladen wird, obwohl ja explizit KEIN "NONSSL" an die Funktion übergeben wurde.

    Statt:

    Code: PHP  [Auswählen]
        $link = $connection == 'SSL' && ENABLE_SSL ? HTTPS_SERVER : HTTP_SERVER;

    Sollte so?

    Code: PHP  [Auswählen]
        $link = (($connection == 'NONSSL') ? HTTP_SERVER : HTTPS_SERVER);


    Linkback: https://www.modified-shop.org/forum/index.php?topic=34909.0

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: 2.0 - SSL und xtc_href_link.inc.php
    Antwort #1 am: 30. April 2016, 08:37:50
    Hallo webald,

    versuch die hinter deinen Zweifeln steckende Problematik ein bisschen zu erläutern und zu vertiefen.

    Beispiele für die korrekte Verwendung der Funktion 'xtc_href_link()':

    Code: PHP  [Auswählen]

    xtc_href_link(FILENAME_LOGIN, 'info_message='.urlencode(TEXT_PASSWORD_SENT), 'SSL', true, false);

    xtc_href_link(FILENAME_LOGIN, 'info_message='.urlencode(TEXT_PASSWORD_SENT), 'NONSSL', true, false);

    xtc_redirect(xtc_href_link(FILENAME_DEFAULT, '', 'NONSSL'));

    xtc_href_link(FILENAME_DEFAULT, $cPath_new);

    xtc_href_link(FILENAME_DEFAULT);

     

    Beispiele für inkorrekte (falsche) Verwendung der Funktion 'xtc_href_link()':

    Code: PHP  [Auswählen]

    xtc_href_link(FILENAME_LOGIN, 'info_message='.urlencode(TEXT_PASSWORD_SENT), '', true, false);

    xtc_href_link(FILENAME_LOGIN, 'info_message='.urlencode(TEXT_PASSWORD_SENT), 'XXX', true, false);

    xtc_href_link(FILENAME_LOGIN, 'info_message='.urlencode(TEXT_PASSWORD_SENT), '');

     

    Nun ist es so, die Funktion 'xtc_href_link()' baut bei seiner inkorrekten Verwendung einen Link unter dem Protokoll 'http' zusammen, du aber möchtest das in diesem Fall ein Link unter dem 'https' Protokoll erstellt wird. Dies kann man durchaus als den richtigeren Weg ansehen, vor allem im Hinblick auf die Zukunft, in der wohl die verschlüsselte Übertragung von Internetseiten zum Standard wird.

    Jetzt zu deinem Code-Vorschlag hier

    Code: PHP  [Auswählen]
    $link = (($connection == 'NONSSL') ? HTTP_SERVER : HTTPS_SERVER);

    der müsste dann aber so aussehen

    Code: PHP  [Auswählen]
    $link = (($connection == 'NONSSL') ? HTTP_SERVER : (ENABLE_SSL ? HTTPS_SERVER : HTTP_SERVER));

    denn die Vorgabe aus der Configure.php 'ENABLE_SSL' darf man auf keinen Fall übergehen, hat der Shop nämlich kein Zertifikat, also weder ein gültiges noch ein ungültiges, wird im Browser ein Fehler in der Art "Diese Seite kann nicht angezeigt werden" ausgegeben.

    Übrigens in den Vorgängern von modified  also im osc und auch im xtc sieht die entsprechende Codestelle so aus

    Code: PHP  [Auswählen]
        if ($connection == 'NONSSL') {
          $link = HTTP_SERVER . DIR_WS_CATALOG;
        } elseif ($connection == 'SSL') {
          if (ENABLE_SSL == true) {
            $link = HTTPS_SERVER . DIR_WS_CATALOG;
          } else {
            $link = HTTP_SERVER . DIR_WS_CATALOG;
          }
        } else {
          die('</td></tr></table></td></tr></table><br /><br /><font color="#ff0000"><b>Error!</b></font><br /><br /><b>Unable to determine connection method on a link!<br /><br />Known methods: NONSSL SSL</b><br /><br />');
        }
     

    PS:
    Möchte man aber im Shopsystem die verschlüsselte Übertragung generell als Standard einführen müsste man korrekterweise überall im Code 'NONSSL' in 'SSL' abändern bzw. 'NONSSL' weg lassen und in der Funktion Funktion 'xtc_href_link()' den dritten Parameter von '$connection = 'NONSSL'' zu '$connection = 'SSL'' ändern.

    Gruss
    Hanspeter

    webald

    • modified Team
    • Beiträge: 2.791
    Re: 2.0 - SSL und xtc_href_link.inc.php
    Antwort #2 am: 30. April 2016, 11:50:51
    Ich hatte mir darüber nie Gedanken gemacht, mir viel nur gestern folgendes Verhalten in einem Shop auf. Gegeben:

    Code: PHP  [Auswählen]
      define('HTTP_SERVER', 'http://localhost:8080'); // eg, http://localhost - should not be empty for productive servers
      define('HTTPS_SERVER', 'https://localhost:8080'); // eg, https://localhost - should not be empty for productive servers
     define('ENABLE_SSL', false); // secure webserver for checkout procedure?

    Der Shop hat aber ein gültiges SSL-Zertifikat.

    Nun passierte im Standard folgendes:
    Ruft man die Seite über https auf bekommt man Fehler angezeigt, dass nicht alle Verbindungen sicher sind. In diesem Fall war es das Favicon, welches über http geladen wurde, obwohl theoretisch alles über https geladen werdne kann. Das erschien mir unlogisch.

    Das mit dem Fallback auf http ist natürlich ein Argument aber warum sollte ein fehlerhafter Verbindungsversuch über https nicht mit einem Fehler beantwortet werden.

    Ich habe das mal in Ticket #870 festgehalten.
    6 Antworten
    3814 Aufrufe
    16. März 2014, 18:38:16 von neulingo
    34 Antworten
    17949 Aufrufe
    24. März 2015, 02:13:11 von Nils
    21 Antworten
    12293 Aufrufe
    29. Oktober 2012, 03:18:17 von noRiddle (revilonetz)
    2 Antworten
    1821 Aufrufe
    25. Januar 2016, 17:09:41 von tuvalu