Shop während der Entwicklung vor Google-Indizierung und unerwünscheten Besuchern schützen

Mit dem HTTP-Passwort lässt sich der Shop in der Aufbauphase gut vor unerwünschten Besuchern und Indizierung durch Suchmaschinen schützen.

Der etwas umständlichere Weg ist die Einrichtung des HTTP-Passwors über die Server-Konfigurationsdateien .htaccess und .htusers (mehr Details dazu bei SELFHTML).

Da in Magento alle relevanten Anfragen über die index.php abgearbeitet werden (Single Point of Entry), kann der Passwort-Schutz direkt dort umgesetzt werden. Dazu kann am Anfang der index.php nach dem <?php der folgende Code eingebaut werden:

<?php

define('ADMIN_USERNAME','user');
define('ADMIN_PASSWORD','geheim123');

if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
        $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME ||$_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {

    Header("WWW-Authenticate: Basic realm=\"Magento Development Environment\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo 'Access Denied. ' . time();
    exit;
}

Damit werden Frontend und Backend geschützt. Doch im Backend kann der Flash-Uploader für Produktbilder mit dem Passwortschutz nicht umgehen und meldet den Fehler „Upload HTTP Error“:

Da der Zugang zum Backend bereits geschützt ist, kann er durch eine entsprechende Erweiterung des Codes vom HTTP-Passwortschutz ausgeschlossen werden:

define('ADMIN_URL','admin');
define('ADMIN_USERNAME','user');
define('ADMIN_PASSWORD','geheim123');

if(strpos($_SERVER['REQUEST_URI'], ADMIN_URL) === false) {
    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
               $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME ||$_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {

        Header("WWW-Authenticate: Basic realm=\"Magento Development Environment\"");
        Header("HTTP/1.0 401 Unauthorized");
        echo 'Access Denied. ' . time();
        exit;
    }
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.