Gibt es eine Möglichkeit, den Zugriff auf Komponenten mithilfe einer Nicht-SEF-URL zu blockieren?

7

Mein Kunde erkennt, dass wir auf Komponenten in Joomla zugreifen können, indem wir eine Nicht-SEF-URL verwenden, auch wenn SEF aktiviert ist.

Er mag es nicht, weil die Seite ohne Itemid in der URL unordentlich ist. Zum Beispiel ist http://www.joomla.org/index.php?option=com_content das, was die Leute auf seiner Website nicht sehen sollen.

Gibt es eine Möglichkeit, den Zugriff auf die Site mithilfe von Nicht-SEF-URLs zu blockieren, wenn SEF in der globalen Konfiguration aktiviert ist?

Hung Tran
quelle

Antworten:

6

Mit diesem Code können Sie ein System-Plugin erstellen:

public function onAfterInitialise(){
    $app = JFactory::getApplication();
    $config = JFactory::getConfig();
    $uri = JUri::getInstance();
    if($config->get("sef") && $app->isSite() && $uri->getQuery()){
        throw new Exception("Not Found", 404);
    }
}

Wenn wir also nach dem Fragezeichen etwas haben ?, wird ein 404-Fehler ausgegeben.

Geben Sie stattdessen einen 404-Fehler aus. Sie können den Benutzer auf die Startseite umleiten, wenn Sie möchten.

Bearbeiten:

Wenn Sie zulassen möchten, dass eine Erweiterung ein Fragezeichen verwendet, können Sie Folgendes tun:

public function onAfterRoute(){
    $app = JFactory::getApplication();
    $config = JFactory::getConfig();
    $menu = $app->getMenu();
    if($config->get("sef") && $app->isSite() && !$menu->getActive()){
        throw new Exception("Not Found", 404);
    }
}

Wenn der aktuellen Route kein Menü zugeordnet ist, wird ein 404-Fehler ausgegeben.

csbenjamin
quelle
Es ist eine schöne Lösung. Wir müssen jedoch sicherstellen, dass es keine Erweiterungen gibt, die Fragezeichen verwenden, um das Layout zu definieren oder eigene Funktionen auszuführen. ZB domain.com/submit?layout=success, domain.com/submit?layout=error
Hung Tran
1
@HungTran Siehe meine Bearbeitung oben
csbenjamin
Danke, ich habe es versucht und es hat perfekt funktioniert. Ich frage mich, warum ich vorher nicht daran gedacht hatte, ein System-Plugin zu verwenden.
Hung Tran
2

Aber wie zufällige Besucher werden jemals die Nicht-SEF-URLs erraten und diese anstelle der SEF-URLs verwenden, damit sie die unordentliche Vorlagenansicht erhalten?

Eine Möglichkeit, dies zu vermeiden, besteht darin, eine SEF-Erweiterung eines Drittanbieters zu verwenden, die immer ein Nicht-SEF in eine entsprechende SEF-URL übersetzt. Besucher sehen das Non-Sef nicht in der Adressleiste des Browsers.

Das Problem mit der unordentlichen Vorlage wird jedoch nicht verschwinden. Ich denke, dieses Problem ist auf die Tatsache zurückzuführen, dass beim Anzeigen der Seiten ein anderer Menüpunkt oder gar kein Menüpunkt berücksichtigt wird, sodass alle für diese Seiten bestimmten CSS-Suffixe, Module oder andere spezielle Dinge korrekt behandelt werden.

Um dieses Problem zu beheben, müssen Sie diese Seiten dem gewünschten Menüpunkt zuweisen.

FFrewin
quelle
2
Das Problem ist, dass es viele schlechte Bots gibt, die Ihre Site nach allem und jedem durchsuchen. Das Verstecken vor dem Front-End-Benutzer bedeutet also nicht wirklich viel. Ich habe Zugriffsprotokolle mit Komponenten-URLs für Dinge gesehen, die ich nicht installiert habe, weil sie nach anfälligen Komponenten gesucht haben.
Brian Peat
Das ist wahr, aber Hung bezog sich auf die menschlichen Besucher und darauf, wie verhindert werden kann, dass nicht-sef-URLs ohne den richtigen Menüpunkt angezeigt werden, der Anzeigeprobleme verursacht.
FFrewin
Alte Lesezeichen oder Google-Ergebnisse sind Möglichkeiten, um zu unerwünschten URLs zu gelangen. Auch die Vermeidung von Unordnung und das Verbot der Verwendung sind zwei verschiedene Dinge. Offensichtlich können Sie sie nicht davon abhalten, die unerwünschten URLs einzugeben. Sie können verhindern, dass Joomla auf sie reagiert.
Sovainfo
Okay, stimmte auch zu. Aber warum sollte eine 404-Seite bereitgestellt werden, wenn diese Seite tatsächlich vorhanden ist und Sie sie wunderschön mit der gewünschten URL anzeigen können? Außerdem wird insbesondere bei Google möglicherweise jede Nicht-Sef-URL aus den Suchergebnissen entfernt, wenn es eine kanonische Sef-URL gibt. Und ich habe das Gefühl, was Hung gefragt hat, ist, dass sie nicht möchten, dass das Nicht-SEF sichtbar ist und dass Anzeigeprobleme vermieden werden, wenn keine oder die falsche Artikel-ID vorhanden ist.
FFrewin