de_DEus

Warum man keine Module über den Magento-Connect-Manager installieren sollte

Der ins Magento-Backend 2015-05-07 14_51_59-Übersicht _ Magento Administrationintegrierte “Magento Connect Manager” ist eine schnelle und einfache Methode, auch ohne vertiefte Kenntnisse neue Module zu testen bzw. zu installieren. Er ermöglicht z.B. Shoppbetreibern ohne technischen Betreuer Module zu installieren.

Das Problem

Wir empfehlen jedoch, den Magento-Connect-Manager nicht zu nutzen und im Idealfall komplett zu sperren. Folgende Gründe sprechen gegen die Nutzung:

  • Jedes Modul, das in einem Live-Shop eingesetzt wird, sollte einem Code-Review unterzogen werden. Andernfalls besteht die Gefahr, Module mit Sicherheitslücken, Spyware oder Performanceproblemen zu installieren.
  • Die Nutzung des Connect Managers macht die Integration mit einer Versionsverwaltung (Git, SVN, …) deutlich schwieriger. Jeder professionell betreute Shop sollte eine Versionsverwaltung nutzen.
  • Ein Modul sollte nie ungetestet auf einem Live-System installiert werden. Die Deinstallation eines Moduls ist häufig nicht so einfach, wie es der Connect Manager vorgaukelt – häufig müssen noch Änderungen an der Datenbank gemacht werden, nachdem ein Modul deinstalliert wurde.
  • Der technische Betreuer des Shops sollte immer den Überblick über alle installierten Module haben, um mögliche Probleme schnell erkennen zu können. Solange der Magento Connect Manager verfügbar ist, kann dies nie hundertprozentig gewährleistet werden.
  • Er verleitet dazu, zu viele Module zu nutzen. Mit steigender Anzahl Module steigt das Risiko von Konflikten zwischen Modulen. Außerdem wird es immer unwahrscheinlicher, dass Magento-Updates noch reibungslos durchlaufen.
  • Der Magento Connect Manager ist ein Sicherheitsproblem. Während man die URL des Admin-Bereiches noch anpassen kann, ist die Login-Maske des Connect Managers immer über die gleiche URL “/downloader/” erreichbar. Wenn dort das Admin-Passwort z.B. durch eine Brute-Force-Attacke geknackt wurde, kommt der Angreifer von dort per Direktlink zum Admin-Bereich.

Alternative

Jedes zu installierende Modul sollte zunächst auf einem Entwicklungs- bzw. Testsystem installiert werden. Hierfür nutzt man im Idealfall Composer oder ein ähnliches Werkzeug. Alternativ kann man sich das zu installierende Paket herunterladen (entweder direkt von GitHub, oder bei Modulen, die man auf MagentoConnect findet, über ein Tool wie den “magento connect 2.0 extension downloader“). Das heruntergeladene Modul sollte zumindest einem groben Code Review unterzogen werden. Anschließend kann es auf Dateiebene in das Entwicklungs- bzw. Testsystem kopiert und der Versionsverwaltung hinzugefügt werden, wo man es testet. Über die Versionsverwaltung kann man das Modul anschließend auch wieder problemlos entfernen, sodass es gar nicht erst auf den Live-Server kommt.

Sperrung des Magento Connect Managers

Wir empfehlen aus oben genannten Gründen, den Zugriff auf den Connect Manager komplett zu sperren. Dies kann wie folgt umgesetzt werden:

  1. Löschen des Verzeichnisses “downloader” in Magento. Dies ist die sicherste Methode, hat aber den Nachteil, dass das Verzeichnis in jedem Update erneut enthalten ist. Man muss das Verzeichnis also nach jedem Magento-Update erneut entfernen.
  2. Deaktivieren des Zugriffs auf den Magento Connect Manager über die Berechtigungsfunktion von Magento. Dies ist die einfachste Methode, behebt aber nicht das oben zuletzt genannte Sicherheitsproblem.
  3. Sperren des Zugriffs über die .htaccess von Magento, wenn Sie Apache einsetzen. Dies kann z.B. über Hinzufügen der folgenden Zeile am Anfang der Datei .htaccess im Magento-Hauptverzeichnis erfolgen:

 

Andreas von Studnitz

Autor: Andreas von Studnitz

Andreas von Studnitz ist Diplom-Informatiker, Magento-Entwickler und Geschäftsführer von integer_net. Seine Schwerpunkte sind Schnittstellenentwicklung, Backendentwicklung, Beratung und Entwicklerschulungen. Seit 2011 ist er Magento Certified Developer, seit 2014 Magento Certified Solution Specialist.

Mehr Informationen

Dieser Beitrag hat 3 Kommentare

  1. Flyingmana sagt:

    Ein wichtiger Punkt hier den sehr viele Entwickler vergessen: Manche Module haben Abhänigkeiten.

    Die häufig genutzten Tools um sich die Module direkt runter zu laden ignorieren das, wodurch Features teilweise nicht vollständig funktionieren.

    Kontrolliert daher immer die enthaltene package.xml auf den “dependency”-tag und ob er andere Module beinhaltet.

  2. loeffel sagt:

    1.) Ist dies nicht auch unter Verwendung des Connect Managers möglich? Was spricht dagegen, die Datei per Freegento zu laden, zu prüfen und lokal zu testen um sie danach auf dem Liveshop per Manager zu installieren?

    2.) Alle per CM geladenen Module können über den CM auf Updates geprüft werden. Alle anderen Modulen (und so viele sollten das nicht sein) kann man problemlos auf GitHub folgen um per Mail über Updates informiert zu werden.

    3.) Siehe 1.

    4.) Alle Module legen in etc/modules eine xml Datei ab – hier ist deine 100%ige Übersicht aller intallierten Module.

    5.) Das ist schlicht Blödsinn.

    6.) .htaccess…?

  3. @loeffel: Sicher, wer sich auskennt und genau weiß, was der Connect Manager tut, kann diesen durchaus benutzen. Du scheinst unter diese Gruppe zu fallen. Leider werden 80% (geschätzt) der Magento-Shops aber von nicht so technisch versierten bzw. mit Magento erfahrenen Personen betreut – für diese ist der Blogbeitrag gedacht.
    Zu den einzelnen Punkten:
    1. bis 3.) Die Module in der Versionsverwaltung zu führen ist in meinen Augen unverzichtbar, sobald man mehr als eine Umgebung nutzt, z.B. ein Entwicklungssystem und ein Livesystem. Sonst sind Fehler, die aus unterschiedlichen Versionsständen resultieren, früher oder später unvermeidbar. Einzige in meinen Augen vertretbare Alternative ist, Composer, Git Submodules o.ä. zu nutzen und dies in den Deployment-Prozess zu integrieren.
    4.) Kann man so sehen, okay. Aber auch hierfür ist wichtig, dass auf allen Systemen der gleiche Stand herrscht.
    5.) Ansichtssache. Meiner Erfahrung nach ist das ein relevantes Problem.
    6.) Korrekt. Wie ich weiter unten auch aufgeführt habe, ist das eine der möglichen Lösungen.

Einen Kommentar hinterlassen