SlideShare ist ein Scribd-Unternehmen logo
Analyse anonymized.at von integer_net GmbH Seite 1
Analyse des Magento-Shops
www.anonymized.at
Version: 1.0
Datum: 21.12.2015
Adressat: Harald Meier, ANONYMIZED GmbH
Autor: Andreas von Studnitz, Geschäftsführer
Diplom-Informatiker
Magento Certified Developer
Magento Certified Solution Specialist
Analyse anonymized.at von integer_net GmbH Seite 2
Inhalt
1 Funktionsumfang des Shops .................................................................................................................. 3
1.1 Magento-System .............................................................................................................................. 3
1.2 Integrierte Module ........................................................................................................................... 3
1.3 Individuelle Module.......................................................................................................................... 6
1.4 Einschätzung..................................................................................................................................... 7
2 Analyseergebnisse.................................................................................................................................. 8
2.1 Sicherheit.......................................................................................................................................... 8
2.1.1 Server ................................................................................................................................................ 8
2.1.2 Basissystem ....................................................................................................................................... 8
2.1.3 Eingesetzte Module........................................................................................................................... 8
2.2 Qualität............................................................................................................................................. 8
2.2.1 Konfiguration..................................................................................................................................... 8
2.2.2 Layout und Template ........................................................................................................................ 8
2.2.3 Fremdmodule.................................................................................................................................. 10
2.2.4 Individuelle Module ........................................................................................................................ 10
2.2.5 Skripte im Hauptverzeichnis............................................................................................................ 10
2.3 Updatefähigkeit.............................................................................................................................. 11
2.3.1 Überschriebene Kerndateien .......................................................................................................... 11
2.3.2 Dateien in app/code/local/Mage/ .................................................................................................. 11
2.3.3 Rewrites .......................................................................................................................................... 11
2.3.4 Struktur der Template-Dateien....................................................................................................... 11
2.3.5 Struktur der Layout-XML-Dateien ................................................................................................... 12
3 Fazit und Handlungsempfehlung ......................................................................................................... 13
3.1 Gesamtzustand und aktuelle Probleme ......................................................................................... 13
3.2 Empfehlungen ................................................................................................................................ 13
Analyse anonymized.at von integer_net GmbH Seite 3
1 Funktionsumfang des Shops
1.1 Magento-System
Der Shop beruht auf der Magento Enterprise Edition 1.14.0.1, veröffentlicht 15.05.2014. Aktuell ist Version
1.14.2.2, veröffentlicht 27.10.2015.
1.2 Integrierte Module
Die folgenden Fremdmodule sind im Shop integriert:
 Aijko_WidgetImageChooser
Ermöglicht das Einbinden von Bildern und Grafiken in Widgets
Qualität: gut
Umfang: gering
 Anaraky_Gdrt
Google Remarketing Tags
Qualität: in Ordnung
Umfang gering
 Aoe_Scheduler
Deaktiviert
 Atwix_CustomCategoryAttribute
Legt ein Kategorieattribut an
Umfang: sehr gering
Modul überflüssig
 AvS_FastSimpleImport
Basismodul für verschiedene Importe
Qualität: gut
Umfang: groß
 Buric_Apc
Cache-Säuberungsfunktion für APC-Cache
Qualität: gut
Umfang: gering
 Ebizmarts_Abandonedcart
Versand von Emails bei bestimmten Auslösern
Qualität: in Ordnung
Umfang: groß
 Ebizmarts_Autoresponder
Versand von Emails bei bestimmten Auslösern
Qualität: in Ordnung
Umfang: sehr groß
 Ebizmarts_MageMonkey
MailChimp-Integration (Newsletter)
Qualität: gut
Umfang: groß
 Ebizmarts_Mandrill
Mandrill-Integration (Newsletter)
Qualität: gut
Umfang: mittel
 Fooman_EmailAttachments
Hängt PDFs an Bestell- und Rechnungsemails an
Qualität: gut:
Umfang: mittel
Analyse anonymized.at von integer_net GmbH Seite 4
 Fooman_GoogleAnalyticsPlus
deaktiviert
 Magefast_FileTypesWYSIWYG
Einbindung von hochgeladenen Dokumenten im Wysiwyg-Editor
Qualität: gut
Umfang: gering
 Mediarocks_NewsletterExtended
Erweiterte Newsletter-Registrierung (z.B. neue Felder)
Qualität: in Ordnung
Umfang: mittel
 Netresearch_Ops
Zahlungsmodul Ogone
Qualität: gut
Umfang: groß
 Nostress_Nscexport
Export von Produkt-Feeds für Preissuchmaschinen
Qualität: in Ordnung
Umfang: sehr groß
 Paymentnetwork_Pnsofortueberweisung
Zahlungsart Sofortüberweisung
Qualität: gut
Umfang: mittel
 Vaimo_Klarna
Zahlungsart Klarna
Qualität: gut
Umfang: mittel
 Vinagento_Vpager
deaktiviert
 WP_CustomMenu
Individuelles Hauptmenü
Qualität: mäßig
Umfang: mittel
 Xonu_FGP
Fixierte Bruttopreise unabhängig vom Steuersatz
Qualität: gut
Umfang: gering
 Amasty_Customerattr
deaktiviert
 Amasty_File
Dateianhänge zu Produkten
Qualität: in Ordnung
Umfang: mittel
 Amasty_Ogrid
Optimierte Bestellungen-Tabelle im Backend
Qualität: in Ordnung
Umfang: mittel
 Amasty_Pgrid
Optimierte Produkte-Tabelle im Backend
Qualität: in Ordnung
Umfang: mittel
Analyse anonymized.at von integer_net GmbH Seite 5
 Andavis_Mapy
Erweiterte Produkt-API
Qualität: mäßig
Umfang; gering
 Anowave_Ec
Google Tag Manager
Qualität: in Ordnung
Umfang: mittel
 Conlabz_Useroptin
Email-Bestätigung nach Benutzerregistrierung
Qualität: in Ordnung
Umfang: gering
 Anonymized_*
Individuelle Module, siehe unten
 GoMage_Navigation
Optimierte Filterfunktion
Qualität: in Ordnung
Umfang: groß
 Mana_Ajax
deaktiviert
 Mana_Db
Unklare Indizierungs-Funktionalität
Qualität: mäßig
Umfang: mittel
 Mana_Filters
Optimierte Filterfunktionalität
Qualität: mäßig
Umfang: groß
 Mana_Seo
deaktiviert
 ManaPro_Filter*
deaktiviert
 Mango_Categoryattributes
Verwaltung von Kategorieattributen
Qualität: mäßig
Umfang: mittel
 Mango_Categorytabs
Verwaltung von Kategorieattributgruppen
Qualität: mäßig
Umfang: mittel
 Mirasvit_*
Verschiedene Module für Caching, Suche (Sphinx) und Seo
Qualität: in Ordnung
Umfang: sehr groß
 Mstage_*
Individuelle Module, siehe unten
 Rup_Voucheractivate
Individuelles Modul, siehe unten
Analyse anonymized.at von integer_net GmbH Seite 6
1.3 Individuelle Module
Die speziell für den Anonymized-Shop entwickelten Module befinden sich in den Namespaces „Anonymized“,
„Mstage“ und „Rup“. Die hierin enthaltenen Anpassungen sind im Verhältnis zu den Anpassungen aus externen
Modulen relativ gering. Hervorzuheben ist hier die Funktion zum Anzeigen von konfigurierbaren Produkten
innerhalb von gruppierten Produkten (Modul „Anonymized_GroupedConfigurable) und die Import- und Export-
funktionen („Anonymized_OmImport“ und „Anonymized_OmExport“). Im Detail:
 Anonymized_AjaxCart
deaktiviert
 Anonymized_Cache
ohne Funktion
 Anonymized_Catalog
Standardeinstellung für Kategorien und kleinere Anpassungen
 Anonymized_Checkout
Anpassung Anzahl Crossselling-Produkte und Funktion zur Lieferzeitdarstellung
 Anonymized_Common
Automatisierte Konfiguration, viele kleine Anpassungen für Gutscheine, SAP etc.
 Anonymized_Contacts
Anpassungen Kontaktformular
 Anonymized_GroupedConfigurable
Darstellung von konfigurierbaren Produkten innerhalb von gruppierten Produkten
 Anonymized_IndexUpdater
ohne sichtbare Funktion
 Anonymized_Mapy
Anpassung API-Funktion (URL-Key)
 Anonymized_OmExport
Export von Gutscheinen und Guthaben
 Anonymized_OmImport
Import von Produktdaten
 Anonymized_Slider
Slider als Widget
 Anonymized_Topseller
Widgets für Topseller und Neuheiten
 Mstage_AddSimple
Unklare Anpassung beim Hinzufügen von Produkten zum Warenkorb
 Mstage_Catalog
Standardeinstellung „auf Lager“ für Produkte
 Mstage_Customcatattrb
Anlegen eines Kategorieattributes
 Mstage_Import
Import von Lagerbestand
 Mstage_Optionstyles
Gestaltungsmöglichkeiten per CSS für Filteroptionen
 Mstage_UltimateConfigurableProducts
Angepasste Darstellung von konfigurierbaren Produkten
 Rup_Voucheractivate
Aktivierung von Gutscheinen bei Bezahlung
Analyse anonymized.at von integer_net GmbH Seite 7
Die Qualität der Module ist durchwachsen, bewegt sich aber immer in einem gewissen Rahmen – die meisten
Module haben eine zufriedenstellende, aber nicht herausragende Codequalität.
1.4 Einschätzung
Das Projekt Anonymized ist eindeutig „historisch gewachsen“. Dafür spricht allein die Zahl von 28 deaktivierten,
aber noch im System vorhandenen Modulen, aber auch die große Zahl von 88 externen aktiven Modulen, die
teilweise auch die gleiche Funktionalität abdecken. Positiv ist zu bemerken, dass die Qualität der eingesetzten
Module durchgehend relativ hoch ist und es keine Ausreißer nach unten gibt.
Analyse anonymized.at von integer_net GmbH Seite 8
2 Analyseergebnisse
2.1 Sicherheit
2.1.1 Server
Der Server konnte mangels Zugriff nicht geprüft werden. Von außen wurden keine Probleme festgestellt.
2.1.2 Basissystem
Die Magento-Version 1.14.0.1 ist relativ aktuell. Alle relevanten Sicherheitspatches sind eingespielt.
Bei der Analyse auf Core-Hacks ist ein offensichtlich erfolgreicher Hack aus dem Mai 2015 aufgefallen. Über die
vom Angreifer ausgenutzte Sicherheitslücke können wir nur spekulieren – es könnte sowohl ein zu spät einge-
spielter Sicherheitspatch sein, als auch ein geknackter Admin-Account. Auch eine Sicherheitslücke außerhalb
von Magento ist denkbar. Das lässt sich leider nicht mehr nachvollziehen.
Durch geeignete Maßnahmen hätte der Angriff allerdings verhindert (Eingeschränkte Dateirechte für den Web-
User) oder schneller bemerkt (regelmäßige Analyse auf Veränderungen am Core-Code) werden können. Es
wurden bereits erfolgreich Maßnahmen zum Entfernen des Schadcodes durchgeführt.
Ansonsten sind keine relevanten Sicherheitslücken öffentlich bekannt.
2.1.3 Eingesetzte Module
Die Analyse der eingesetzten Module hat keine Schwachstellen ergeben.
2.2 Qualität
2.2.1 Konfiguration
Bei der Konfiguration des Magento-Systems wurde im Großen und Ganzen nicht viel falsch gemacht. Folgende
Punkte sind aufgefallen:
- Die Funktion „Flat Catalog“ für eine schnellere Auslieferung von Produkt- und Kategoriedaten ist deak-
tiviert. Aus Performancegründen sollte sie aktiviert sein.
- Aus Sicherheitsgründen wäre eine abgewandelte Admin-URL sowie die Entfernung / Deaktivierung des
Magento-Connect-Managers wichtig (siehe http://www.integer-net.de/warum-man-keine-module-
ueber-den-magento-connect-manager-installieren-sollte/)
- CSS-Dateien und JS-Dateien sollten zusammengefasst werden, um weniger Requests und damit eine
höhere Performance zu erzielen.
2.2.2 Layout und Template
Template
Das Template besteht in Magento aus einer Mischung aus PHP und HTML in Dateien mit der Endung .phtml.
Dazu kommt die Strukturierung dieser Template-Dateien mit Hilfe von Layout-XML-Dateien.
Schwierig für die Analyse und später auch für die Weiterentwicklung ist die Tatsache, dass sich dutzende Si-
cherheitskopien verschiedener Dateien in den Verzeichnissen befinden. Üblicherweise verwendet man für
diesen Zweck eine Versionsverwaltung wie Git, Mercurial oder SVN. Beispiele:
Analyse anonymized.at von integer_net GmbH Seite 9
Die Qualität des Templates ist sehr durchwachsen, tendenziell aber eher schlecht. Positiv ist, dass der Fallback-
Mechanismus von Magento genutzt wird und nur die Dateien in das eigene Theme-Verzeichnis kopiert wurden,
die auch Anpassungen erfahren haben. Alle anderen Dateien bleiben updatefähig.
Für die Layout-XML-Dateien wurde dieses Konzept leider nicht durchgezogen, sodass größere Dateien wie ca-
talog.xml, checkout.xml oder page.xml komplett, mit nur geringen Anpassungen, kopiert sind.
Leider weisen einige Template-Dateien größere Schwächen auf. Die größten Probleme sind:
- Umsetzung kompletter Funktionen in phtml-Dateien. Aufgrund der Trennung von Struktur, Funktion
und Layout sollten diese Funktionen in passenden Blocks bzw. Helpern umgesetzt werden. Beispiele:
o app/design/frontend/anonymized/default/template/catalog/category/view.phtml
o app/design/frontend/anonymized/default/template/amshopby/price.phtml
o app/design/frontend/anonymized/default/template/page/2columns-left.phtml
- Integration langer Javascript-Bereiche direkt im Template statt in separaten Javascript-Dateien:
o app/design/frontend/anonymized/default/template/ec/header.phtml
o app/design/frontend/anonymized/default/template/page/html/overlay.phtml
Analyse anonymized.at von integer_net GmbH Seite 10
o app/design/frontend/anonymized/default/template/page/2columns-left.phtml
- Performance-Probleme dadurch, dass innerhalb von Schleifen Produkte oder Kategorien neu geladen
werden, was einfach vermieden werden kann. Beispiele:
o app/design/frontend/anonymized/default/template/catalog/category/list.phtml
o app/design/frontend/anonymized/default/template/catalog/navigation/left.phtml
o app/design/frontend/anonymized/default/template/catalog/product/list/upsell.phtml
o app/design/frontend/anonymized/default/template/catalog/product/list/related.phtml
CSS
Für CSS wird der Präprozessor LESS verwendet, was gegenüber dem Standard-CSS von Magento ein deutlicher
Fortschritt ist und strukturierteres Arbeiten ermöglicht. Die Codequalität ist in Ordnung; leider sind einige
leicht vermeidbare Fehler enthalten.
JavaScript
Der mit jQuery umgesetzte JavaScript-Code ist in Ordnung und immerhin modulweise strukturiert.
HTML
Die Prüfung des HTML-Codes mit dem W3C Validator hat je nach geprüfter Seite zwischen 35 und 211
(http://www.anonymized.at/blendtec-classic-575-hochleistungsstandmixer?va=8486) Fehler gefunden. Hier
handelt es sich größtenteils um Nachlässigkeiten bei der Frontend-Entwicklung – Fehler, die größtenteils mit
geringem Aufwand vermeidbar wären.
2.2.3 Fremdmodule
- Größtenteils vernünftige Qualität
- Sehr (zu) hohe Anzahl
- Updatefähigkeit ungewiss
2.2.4 Individuelle Module
- Größtenteils mäßige bis vernünftige Qualität
- Teilweise unerfahrene(r) Entwickler im Einsatz
2.2.5 Skripte im Hauptverzeichnis
Im Hauptverzeichnis finden sich mehrere PHP-Dateien, die auch von außerhalb per
Browser aufrufbar sind. Auch wenn dies im konkreten Fall kein aktuelles Risiko dar-
stellt, widerspricht dies doch den „Best Practices“. Systemoperationen sollten immer
zumindest per Passwort geschützt sein, damit mögliche Sicherheitslücken oder Opera-
tionen mit hoher Systemlast nicht ausgenutzt werden können.
Kritisch ist in meinen Augen die Datei cron_admin.php. Der Aufruf der URL
http://www.anonymized.at/cron_admin.php führt zu einer Auflistung aller Magento-
Cronjobs. Diese Informationen sollten nicht frei verfügbar im Internet abrufbar sein, da
sich damit Rückschlüsse auf eingesetzte Module und Technologien ziehen lassen.
Die Qualität der Skripte ist durchwachsen – die kleineren Skripte, die nur eine Metho-
de in einem Magento-Model aufrufen (z.B. crontest.php), sind okay, während v.a. das
Skript cronprice.php relativ schlechte Qualität mit direkten SQL-Anweisungen beinhal-
tet.
Die Skripte sollten zumindest in das dafür vorgesehen Verzeichnis „shell/“ verschoben
werden, sodass sie nur noch per Kommandozeile oder per Cronjob, aber nicht mehr im
Browser aufgerufen werden können.
Analyse anonymized.at von integer_net GmbH Seite 11
2.3 Updatefähigkeit
2.3.1 Überschriebene Kerndateien
Leider befinden sich mehrere Überschreibungen von Kerndateien im Repository. Hundertprozentig lässt sich
die genaue Zahl der Core-Hacks nicht bestimmen, da nicht alle Patches für uns verfügbar sind und es keinen
eindeutigen Stand zum Vergleich gibt.
Beispiele für überschrieben Kerndateien:
- app/code/core/Mage/Catalog/Model/Layer.php
- app/code/core/Mage/Core/Model/Config.php
- app/code/core/Mage/Sales/Model/Order.php
Dateien, in denen nur Kommentare oder Logging-Aufrufe hinzugefügt sind, habe ich nicht aufgeführt.
Die aufgeführten Dateien sollten kurzfristig analysiert und bereinigt werden, da die Änderungen bei zukünfti-
gen Updates überschrieben werden.
Inwiefern Dateien von gekauften oder kostenlos heruntergeladenen Modulen verändert wurden, lässt sich
momentan leider nicht bestimmen, da nicht alle Original-Module vorliegen. Mit großer Wahrscheinlichkeit
wurden Dateien in externen Modulen angepasst, wodurch sich diese Module nicht mehr gefahrlos aktualisie-
ren lassen (z.B. bei Inkompatibilitäten zu neueren Magento-Versionen). Das Vorhandensein der folgenden
Dateien lässt sehr deutlich darauf schließen:
- app/code/community/Fooman/GoogleAnalyticsPlus/Block/2015-01-30_Ga.php
- app/code/community/Anaraky/Gdrt/Block/_Script.php
Solcherart modifizierte Module lassen sich leider nicht mehr ohne größere Aufwände mit neuen Versionen der
Hersteller aktualisieren.
2.3.2 Dateien in app/code/local/Mage/
Zwei entsprechende Dateien wurden gefunden:
- app/code/local/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Form.php
- app/code/local/Mage/Page/Block/Html/Footer.php
In beiden Fällen wäre eine andere Lösung möglich gewesen. Diese Dateien sollten vor einem Update entfernt
werden und die Änderungen durch andere Lösungen ersetzt werden.
Hintergrund ist, dass es sich hier (neben Core-Hacks) ebenfalls um eine sehr schlechte und wenig updatesichere
Art handelt, Magento-Code zu modifizieren. Mit Rewrites und Event/Observer stehen deutlich bessere Metho-
den zur Verfügung.
2.3.3 Rewrites
Die Anzahl der Rewrites im System ist mit über 60 sehr hoch. Innerhalb dieser Rewrites gibt es drei nicht aufge-
löste Konflikte, wo also mindestens eine Funktionalität jeweils nicht so funktionieren kann wie gedacht. Die
folgenden Klassen werden überschrieben und kommen nicht zum Einsatz:
- Conlabz_Useroptin_Model_Newsletter_Subscriber
- Ebizmarts_MageMonkey_Model_Subscriber
- Mango_Categoryattributes_Block_Adminhtml_Catalog_Category_Tab_Attributes
2.3.4 Struktur der Template-Dateien
Nur angepasste PHTML-Dateien wurden ins Theme-Verzeichnis kopiert – gut. Dennoch befinden sich unter
diesen Dateien mehrere, in denen bei einem Update Anpassungen vorgenommen werden müssen, beispiels-
weise um den mit Magento 1.8 eingeführten Form Key zu unterstützen. Dies lässt sich aber üblicherweise nicht
vermeiden, hier wurde nichts falsch gemacht.
Analyse anonymized.at von integer_net GmbH Seite 12
2.3.5 Struktur der Layout-XML-Dateien
Manche Layout-XML-Dateien wurden komplett ins individuelle Theme kopiert und dort angepasst. Das führt
dazu, dass bei einem Update die Dateien erneut abgeglichen werden müssen. Andere Layout-Dateien sind
hingegen nicht betroffen. Hier sind für eine komplett saubere Umsetzung noch Arbeiten notwendig, um die
Anpassungen in eigene Layout-XML-Dateien zu übertragen und nicht die Kerndateien zu verwenden.
Analyse anonymized.at von integer_net GmbH Seite 13
3 Fazit und Handlungsempfehlung
3.1 Gesamtzustand und aktuelle Probleme
Der Shop ist eindeutig historisch gewachsen, im positiven wie im negativen Sinn, wobei ein Großteil der Zusatz-
funktionalität aus gekauften bzw. heruntergeladenen Modulen besteht. Nur ein relativ kleiner Teil wurde pro-
jektspezifisch umgesetzt. Die Folge davon ist, dass es momentan eine große Menge an inhomogenem, relativ
schlecht wartbaren Code gibt, der nur bedingt gut miteinander funktioniert.
Ein großes Problem ist zurzeit auch, dass im Shop relativ viel „Müll“ in Form von deaktivierten und nicht (mehr)
verwendeten Modulen existiert, was den Shop unübersichtlich und die Weiterentwicklung aufwändiger und
fehleranfälliger macht. Auch die fehlende Versionsverwaltung bzw. das Vorliegen einer Vielzahl von Sicher-
heitskopien modifizierter Dateien ist negativ für die Übersicht und die Wartbarkeit.
Die Updatefähigkeit auf neuere Magento-Versionen ist derzeit nicht gegeben, da in der bisherigen Betreuung
des Shops einige Fehler (z.B. Core-Hacks) gemacht wurden.
Der Shop ist aktuell lauffähig, behindert jedoch die zukünftige Weiterentwicklung deutlich.
3.2 Empfehlungen
In jedem Fall sollten folgende Maßnahmen kurzfristig durchgeführt werden:
- Umzug des Shops auf einen anderen Server, da wir wegen der Sicherheitsprobleme nicht sicher sein
können, dass der jetzige Server nicht kompromittiert wurde
- Einführung einer Versionsverwaltung
- Entfernung deaktivierter Module und Sicherheitskopien
- Verschieben der Skripte im Hauptverzeichnis in das Verzeichnis „shell/“
Soll der aktuelle Shop in den nächsten Monaten weiter gepflegt werden, empfehlen wir zusätzlich folgende
Maßnahmen:
- Entfernung der Core Hacks an Magento-Kerndateien und Umsetzung als Module
- Entfernung der Dateien in app/code/local/Mage und Umsetzung als Module
- Entfernung der Kopien von Kerndateien in app/design/frontend/anonymized/default/layout und Um-
setzung als eigenständige Layout-XML-Dateien
- Auflösung der Rewrite-Konflikte
- Behebung der größten Probleme im Template
- Weitere Aufräumarbeiten (z.B. Entfernung von Logging-Aufrufen)
- Prüfung, ob Module entfernt werden können
- Umwandung von Inline-JavaScript in JS-Dateien
- Evtl. Einführung einer neuen Projektstruktur mit Trennung von Core-Code und einzelnen Modulen
- Update auf neueste Magento-Version

Weitere ähnliche Inhalte

Ähnlich wie Magento Audit - anonymisiert (German)

begin-Seminar:_shop-systeme
begin-Seminar:_shop-systemebegin-Seminar:_shop-systeme
begin-Seminar:_shop-systeme
Martin Kreiensen
 
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
e-dialog GmbH
 
Outils affilies all
Outils affilies allOutils affilies all
Outils affilies allEffiliation
 
2013 OS E-Commerce Magento OXID Shopware
2013 OS E-Commerce Magento OXID Shopware2013 OS E-Commerce Magento OXID Shopware
2013 OS E-Commerce Magento OXID Shopware
Björn Schotte
 
GMP-Con 2019 - Enhanced E-Commerce - Markus Vollmert (lunapark)
GMP-Con 2019 - Enhanced E-Commerce - Markus Vollmert (lunapark)GMP-Con 2019 - Enhanced E-Commerce - Markus Vollmert (lunapark)
GMP-Con 2019 - Enhanced E-Commerce - Markus Vollmert (lunapark)
e-dialog GmbH
 
Shopleiter Magazin Nr. 5 - SEO-, SEM- und eCommerce-Tipps
Shopleiter Magazin Nr. 5 - SEO-, SEM- und eCommerce-TippsShopleiter Magazin Nr. 5 - SEO-, SEM- und eCommerce-Tipps
Shopleiter Magazin Nr. 5 - SEO-, SEM- und eCommerce-Tipps
wallaby IT-Systems - Gründerberater und SEO-Berater
 
Google Analytics Konferenz 2016: PRAXIS - Enhanced E-Commerce (Michaela Linha...
Google Analytics Konferenz 2016: PRAXIS - Enhanced E-Commerce (Michaela Linha...Google Analytics Konferenz 2016: PRAXIS - Enhanced E-Commerce (Michaela Linha...
Google Analytics Konferenz 2016: PRAXIS - Enhanced E-Commerce (Michaela Linha...
e-dialog GmbH
 
Google Analytics im E-Commerce sinnvoll nutzen
Google Analytics im E-Commerce sinnvoll nutzenGoogle Analytics im E-Commerce sinnvoll nutzen
Google Analytics im E-Commerce sinnvoll nutzen
semrush_webinars
 
eStrategy Magazin 02 / 2013
eStrategy Magazin 02 / 2013eStrategy Magazin 02 / 2013
eStrategy Magazin 02 / 2013
TechDivision GmbH
 
SEO on TYPO3 homepage
SEO on TYPO3 homepageSEO on TYPO3 homepage
SEO on TYPO3 homepage
Alex Kellner
 
WooCommerce
WooCommerceWooCommerce
WooCommerce
pixolin
 
Web Analytics Leitfaden Bitkom
Web Analytics Leitfaden BitkomWeb Analytics Leitfaden Bitkom
Web Analytics Leitfaden Bitkom
Ralf Haberich
 
Google Analytics Konferenz 2018_App Tracking_Markus Vollmert (Lunapark)
Google Analytics Konferenz 2018_App Tracking_Markus Vollmert (Lunapark)Google Analytics Konferenz 2018_App Tracking_Markus Vollmert (Lunapark)
Google Analytics Konferenz 2018_App Tracking_Markus Vollmert (Lunapark)
e-dialog GmbH
 
SEO Maintenance - SEODay 2015
SEO Maintenance - SEODay 2015SEO Maintenance - SEODay 2015
SEO Maintenance - SEODay 2015
takevalue Consulting GmbH
 
Presentation at Stuttgarter Softwaretechnik Forum 2008
Presentation at Stuttgarter Softwaretechnik Forum 2008Presentation at Stuttgarter Softwaretechnik Forum 2008
Presentation at Stuttgarter Softwaretechnik Forum 2008
Karsten Schmidt
 
Automatisierung von Client-seitigen Web-Performance-Optimierungen
Automatisierung von Client-seitigen Web-Performance-OptimierungenAutomatisierung von Client-seitigen Web-Performance-Optimierungen
Automatisierung von Client-seitigen Web-Performance-OptimierungenJakob
 
B2B-Shop der Thommen Medical AG: Mit vernetzten Produktdaten zum Wettbewerbsv...
B2B-Shop der Thommen Medical AG: Mit vernetzten Produktdaten zum Wettbewerbsv...B2B-Shop der Thommen Medical AG: Mit vernetzten Produktdaten zum Wettbewerbsv...
B2B-Shop der Thommen Medical AG: Mit vernetzten Produktdaten zum Wettbewerbsv...
Intelliact AG
 
Tag Management System bei der Post
Tag Management System bei der PostTag Management System bei der Post
Tag Management System bei der Post
Unic
 
ChannelPilot - Produktinfo
ChannelPilot - ProduktinfoChannelPilot - Produktinfo
ChannelPilot - Produktinfo
Channel Pilot Solutions GmbH
 

Ähnlich wie Magento Audit - anonymisiert (German) (20)

begin-Seminar:_shop-systeme
begin-Seminar:_shop-systemebegin-Seminar:_shop-systeme
begin-Seminar:_shop-systeme
 
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
 
Outils affilies all
Outils affilies allOutils affilies all
Outils affilies all
 
DE- WHMCS Module
DE- WHMCS ModuleDE- WHMCS Module
DE- WHMCS Module
 
2013 OS E-Commerce Magento OXID Shopware
2013 OS E-Commerce Magento OXID Shopware2013 OS E-Commerce Magento OXID Shopware
2013 OS E-Commerce Magento OXID Shopware
 
GMP-Con 2019 - Enhanced E-Commerce - Markus Vollmert (lunapark)
GMP-Con 2019 - Enhanced E-Commerce - Markus Vollmert (lunapark)GMP-Con 2019 - Enhanced E-Commerce - Markus Vollmert (lunapark)
GMP-Con 2019 - Enhanced E-Commerce - Markus Vollmert (lunapark)
 
Shopleiter Magazin Nr. 5 - SEO-, SEM- und eCommerce-Tipps
Shopleiter Magazin Nr. 5 - SEO-, SEM- und eCommerce-TippsShopleiter Magazin Nr. 5 - SEO-, SEM- und eCommerce-Tipps
Shopleiter Magazin Nr. 5 - SEO-, SEM- und eCommerce-Tipps
 
Google Analytics Konferenz 2016: PRAXIS - Enhanced E-Commerce (Michaela Linha...
Google Analytics Konferenz 2016: PRAXIS - Enhanced E-Commerce (Michaela Linha...Google Analytics Konferenz 2016: PRAXIS - Enhanced E-Commerce (Michaela Linha...
Google Analytics Konferenz 2016: PRAXIS - Enhanced E-Commerce (Michaela Linha...
 
Google Analytics im E-Commerce sinnvoll nutzen
Google Analytics im E-Commerce sinnvoll nutzenGoogle Analytics im E-Commerce sinnvoll nutzen
Google Analytics im E-Commerce sinnvoll nutzen
 
eStrategy Magazin 02 / 2013
eStrategy Magazin 02 / 2013eStrategy Magazin 02 / 2013
eStrategy Magazin 02 / 2013
 
SEO on TYPO3 homepage
SEO on TYPO3 homepageSEO on TYPO3 homepage
SEO on TYPO3 homepage
 
WooCommerce
WooCommerceWooCommerce
WooCommerce
 
Web Analytics Leitfaden Bitkom
Web Analytics Leitfaden BitkomWeb Analytics Leitfaden Bitkom
Web Analytics Leitfaden Bitkom
 
Google Analytics Konferenz 2018_App Tracking_Markus Vollmert (Lunapark)
Google Analytics Konferenz 2018_App Tracking_Markus Vollmert (Lunapark)Google Analytics Konferenz 2018_App Tracking_Markus Vollmert (Lunapark)
Google Analytics Konferenz 2018_App Tracking_Markus Vollmert (Lunapark)
 
SEO Maintenance - SEODay 2015
SEO Maintenance - SEODay 2015SEO Maintenance - SEODay 2015
SEO Maintenance - SEODay 2015
 
Presentation at Stuttgarter Softwaretechnik Forum 2008
Presentation at Stuttgarter Softwaretechnik Forum 2008Presentation at Stuttgarter Softwaretechnik Forum 2008
Presentation at Stuttgarter Softwaretechnik Forum 2008
 
Automatisierung von Client-seitigen Web-Performance-Optimierungen
Automatisierung von Client-seitigen Web-Performance-OptimierungenAutomatisierung von Client-seitigen Web-Performance-Optimierungen
Automatisierung von Client-seitigen Web-Performance-Optimierungen
 
B2B-Shop der Thommen Medical AG: Mit vernetzten Produktdaten zum Wettbewerbsv...
B2B-Shop der Thommen Medical AG: Mit vernetzten Produktdaten zum Wettbewerbsv...B2B-Shop der Thommen Medical AG: Mit vernetzten Produktdaten zum Wettbewerbsv...
B2B-Shop der Thommen Medical AG: Mit vernetzten Produktdaten zum Wettbewerbsv...
 
Tag Management System bei der Post
Tag Management System bei der PostTag Management System bei der Post
Tag Management System bei der Post
 
ChannelPilot - Produktinfo
ChannelPilot - ProduktinfoChannelPilot - Produktinfo
ChannelPilot - Produktinfo
 

Mehr von Andreas von Studnitz

Successful projects with Hyvä - The impact of Developer Happiness
Successful projects with Hyvä - The impact of Developer HappinessSuccessful projects with Hyvä - The impact of Developer Happiness
Successful projects with Hyvä - The impact of Developer Happiness
Andreas von Studnitz
 
Vorstellung Hyvä: Modernes Frontend mit Magento 2
Vorstellung Hyvä: Modernes Frontend mit Magento 2Vorstellung Hyvä: Modernes Frontend mit Magento 2
Vorstellung Hyvä: Modernes Frontend mit Magento 2
Andreas von Studnitz
 
Code Quality with Magento 2
Code Quality with Magento 2Code Quality with Magento 2
Code Quality with Magento 2
Andreas von Studnitz
 
Dependency Injection Extended: the way to advanced Magento 2 development
Dependency Injection Extended: the way to advanced Magento 2 developmentDependency Injection Extended: the way to advanced Magento 2 development
Dependency Injection Extended: the way to advanced Magento 2 development
Andreas von Studnitz
 
Magento Worst Practice (Meet Magento Poland 2016)
Magento Worst Practice (Meet Magento Poland 2016)Magento Worst Practice (Meet Magento Poland 2016)
Magento Worst Practice (Meet Magento Poland 2016)
Andreas von Studnitz
 
Was kann denn schon passieren? Sicherheit in Magento-Shops
Was kann denn schon passieren? Sicherheit in Magento-ShopsWas kann denn schon passieren? Sicherheit in Magento-Shops
Was kann denn schon passieren? Sicherheit in Magento-Shops
Andreas von Studnitz
 
What could possibly go wrong? Security in Magento Shops
What could possibly go wrong? Security in Magento ShopsWhat could possibly go wrong? Security in Magento Shops
What could possibly go wrong? Security in Magento Shops
Andreas von Studnitz
 

Mehr von Andreas von Studnitz (7)

Successful projects with Hyvä - The impact of Developer Happiness
Successful projects with Hyvä - The impact of Developer HappinessSuccessful projects with Hyvä - The impact of Developer Happiness
Successful projects with Hyvä - The impact of Developer Happiness
 
Vorstellung Hyvä: Modernes Frontend mit Magento 2
Vorstellung Hyvä: Modernes Frontend mit Magento 2Vorstellung Hyvä: Modernes Frontend mit Magento 2
Vorstellung Hyvä: Modernes Frontend mit Magento 2
 
Code Quality with Magento 2
Code Quality with Magento 2Code Quality with Magento 2
Code Quality with Magento 2
 
Dependency Injection Extended: the way to advanced Magento 2 development
Dependency Injection Extended: the way to advanced Magento 2 developmentDependency Injection Extended: the way to advanced Magento 2 development
Dependency Injection Extended: the way to advanced Magento 2 development
 
Magento Worst Practice (Meet Magento Poland 2016)
Magento Worst Practice (Meet Magento Poland 2016)Magento Worst Practice (Meet Magento Poland 2016)
Magento Worst Practice (Meet Magento Poland 2016)
 
Was kann denn schon passieren? Sicherheit in Magento-Shops
Was kann denn schon passieren? Sicherheit in Magento-ShopsWas kann denn schon passieren? Sicherheit in Magento-Shops
Was kann denn schon passieren? Sicherheit in Magento-Shops
 
What could possibly go wrong? Security in Magento Shops
What could possibly go wrong? Security in Magento ShopsWhat could possibly go wrong? Security in Magento Shops
What could possibly go wrong? Security in Magento Shops
 

Magento Audit - anonymisiert (German)

  • 1. Analyse anonymized.at von integer_net GmbH Seite 1 Analyse des Magento-Shops www.anonymized.at Version: 1.0 Datum: 21.12.2015 Adressat: Harald Meier, ANONYMIZED GmbH Autor: Andreas von Studnitz, Geschäftsführer Diplom-Informatiker Magento Certified Developer Magento Certified Solution Specialist
  • 2. Analyse anonymized.at von integer_net GmbH Seite 2 Inhalt 1 Funktionsumfang des Shops .................................................................................................................. 3 1.1 Magento-System .............................................................................................................................. 3 1.2 Integrierte Module ........................................................................................................................... 3 1.3 Individuelle Module.......................................................................................................................... 6 1.4 Einschätzung..................................................................................................................................... 7 2 Analyseergebnisse.................................................................................................................................. 8 2.1 Sicherheit.......................................................................................................................................... 8 2.1.1 Server ................................................................................................................................................ 8 2.1.2 Basissystem ....................................................................................................................................... 8 2.1.3 Eingesetzte Module........................................................................................................................... 8 2.2 Qualität............................................................................................................................................. 8 2.2.1 Konfiguration..................................................................................................................................... 8 2.2.2 Layout und Template ........................................................................................................................ 8 2.2.3 Fremdmodule.................................................................................................................................. 10 2.2.4 Individuelle Module ........................................................................................................................ 10 2.2.5 Skripte im Hauptverzeichnis............................................................................................................ 10 2.3 Updatefähigkeit.............................................................................................................................. 11 2.3.1 Überschriebene Kerndateien .......................................................................................................... 11 2.3.2 Dateien in app/code/local/Mage/ .................................................................................................. 11 2.3.3 Rewrites .......................................................................................................................................... 11 2.3.4 Struktur der Template-Dateien....................................................................................................... 11 2.3.5 Struktur der Layout-XML-Dateien ................................................................................................... 12 3 Fazit und Handlungsempfehlung ......................................................................................................... 13 3.1 Gesamtzustand und aktuelle Probleme ......................................................................................... 13 3.2 Empfehlungen ................................................................................................................................ 13
  • 3. Analyse anonymized.at von integer_net GmbH Seite 3 1 Funktionsumfang des Shops 1.1 Magento-System Der Shop beruht auf der Magento Enterprise Edition 1.14.0.1, veröffentlicht 15.05.2014. Aktuell ist Version 1.14.2.2, veröffentlicht 27.10.2015. 1.2 Integrierte Module Die folgenden Fremdmodule sind im Shop integriert:  Aijko_WidgetImageChooser Ermöglicht das Einbinden von Bildern und Grafiken in Widgets Qualität: gut Umfang: gering  Anaraky_Gdrt Google Remarketing Tags Qualität: in Ordnung Umfang gering  Aoe_Scheduler Deaktiviert  Atwix_CustomCategoryAttribute Legt ein Kategorieattribut an Umfang: sehr gering Modul überflüssig  AvS_FastSimpleImport Basismodul für verschiedene Importe Qualität: gut Umfang: groß  Buric_Apc Cache-Säuberungsfunktion für APC-Cache Qualität: gut Umfang: gering  Ebizmarts_Abandonedcart Versand von Emails bei bestimmten Auslösern Qualität: in Ordnung Umfang: groß  Ebizmarts_Autoresponder Versand von Emails bei bestimmten Auslösern Qualität: in Ordnung Umfang: sehr groß  Ebizmarts_MageMonkey MailChimp-Integration (Newsletter) Qualität: gut Umfang: groß  Ebizmarts_Mandrill Mandrill-Integration (Newsletter) Qualität: gut Umfang: mittel  Fooman_EmailAttachments Hängt PDFs an Bestell- und Rechnungsemails an Qualität: gut: Umfang: mittel
  • 4. Analyse anonymized.at von integer_net GmbH Seite 4  Fooman_GoogleAnalyticsPlus deaktiviert  Magefast_FileTypesWYSIWYG Einbindung von hochgeladenen Dokumenten im Wysiwyg-Editor Qualität: gut Umfang: gering  Mediarocks_NewsletterExtended Erweiterte Newsletter-Registrierung (z.B. neue Felder) Qualität: in Ordnung Umfang: mittel  Netresearch_Ops Zahlungsmodul Ogone Qualität: gut Umfang: groß  Nostress_Nscexport Export von Produkt-Feeds für Preissuchmaschinen Qualität: in Ordnung Umfang: sehr groß  Paymentnetwork_Pnsofortueberweisung Zahlungsart Sofortüberweisung Qualität: gut Umfang: mittel  Vaimo_Klarna Zahlungsart Klarna Qualität: gut Umfang: mittel  Vinagento_Vpager deaktiviert  WP_CustomMenu Individuelles Hauptmenü Qualität: mäßig Umfang: mittel  Xonu_FGP Fixierte Bruttopreise unabhängig vom Steuersatz Qualität: gut Umfang: gering  Amasty_Customerattr deaktiviert  Amasty_File Dateianhänge zu Produkten Qualität: in Ordnung Umfang: mittel  Amasty_Ogrid Optimierte Bestellungen-Tabelle im Backend Qualität: in Ordnung Umfang: mittel  Amasty_Pgrid Optimierte Produkte-Tabelle im Backend Qualität: in Ordnung Umfang: mittel
  • 5. Analyse anonymized.at von integer_net GmbH Seite 5  Andavis_Mapy Erweiterte Produkt-API Qualität: mäßig Umfang; gering  Anowave_Ec Google Tag Manager Qualität: in Ordnung Umfang: mittel  Conlabz_Useroptin Email-Bestätigung nach Benutzerregistrierung Qualität: in Ordnung Umfang: gering  Anonymized_* Individuelle Module, siehe unten  GoMage_Navigation Optimierte Filterfunktion Qualität: in Ordnung Umfang: groß  Mana_Ajax deaktiviert  Mana_Db Unklare Indizierungs-Funktionalität Qualität: mäßig Umfang: mittel  Mana_Filters Optimierte Filterfunktionalität Qualität: mäßig Umfang: groß  Mana_Seo deaktiviert  ManaPro_Filter* deaktiviert  Mango_Categoryattributes Verwaltung von Kategorieattributen Qualität: mäßig Umfang: mittel  Mango_Categorytabs Verwaltung von Kategorieattributgruppen Qualität: mäßig Umfang: mittel  Mirasvit_* Verschiedene Module für Caching, Suche (Sphinx) und Seo Qualität: in Ordnung Umfang: sehr groß  Mstage_* Individuelle Module, siehe unten  Rup_Voucheractivate Individuelles Modul, siehe unten
  • 6. Analyse anonymized.at von integer_net GmbH Seite 6 1.3 Individuelle Module Die speziell für den Anonymized-Shop entwickelten Module befinden sich in den Namespaces „Anonymized“, „Mstage“ und „Rup“. Die hierin enthaltenen Anpassungen sind im Verhältnis zu den Anpassungen aus externen Modulen relativ gering. Hervorzuheben ist hier die Funktion zum Anzeigen von konfigurierbaren Produkten innerhalb von gruppierten Produkten (Modul „Anonymized_GroupedConfigurable) und die Import- und Export- funktionen („Anonymized_OmImport“ und „Anonymized_OmExport“). Im Detail:  Anonymized_AjaxCart deaktiviert  Anonymized_Cache ohne Funktion  Anonymized_Catalog Standardeinstellung für Kategorien und kleinere Anpassungen  Anonymized_Checkout Anpassung Anzahl Crossselling-Produkte und Funktion zur Lieferzeitdarstellung  Anonymized_Common Automatisierte Konfiguration, viele kleine Anpassungen für Gutscheine, SAP etc.  Anonymized_Contacts Anpassungen Kontaktformular  Anonymized_GroupedConfigurable Darstellung von konfigurierbaren Produkten innerhalb von gruppierten Produkten  Anonymized_IndexUpdater ohne sichtbare Funktion  Anonymized_Mapy Anpassung API-Funktion (URL-Key)  Anonymized_OmExport Export von Gutscheinen und Guthaben  Anonymized_OmImport Import von Produktdaten  Anonymized_Slider Slider als Widget  Anonymized_Topseller Widgets für Topseller und Neuheiten  Mstage_AddSimple Unklare Anpassung beim Hinzufügen von Produkten zum Warenkorb  Mstage_Catalog Standardeinstellung „auf Lager“ für Produkte  Mstage_Customcatattrb Anlegen eines Kategorieattributes  Mstage_Import Import von Lagerbestand  Mstage_Optionstyles Gestaltungsmöglichkeiten per CSS für Filteroptionen  Mstage_UltimateConfigurableProducts Angepasste Darstellung von konfigurierbaren Produkten  Rup_Voucheractivate Aktivierung von Gutscheinen bei Bezahlung
  • 7. Analyse anonymized.at von integer_net GmbH Seite 7 Die Qualität der Module ist durchwachsen, bewegt sich aber immer in einem gewissen Rahmen – die meisten Module haben eine zufriedenstellende, aber nicht herausragende Codequalität. 1.4 Einschätzung Das Projekt Anonymized ist eindeutig „historisch gewachsen“. Dafür spricht allein die Zahl von 28 deaktivierten, aber noch im System vorhandenen Modulen, aber auch die große Zahl von 88 externen aktiven Modulen, die teilweise auch die gleiche Funktionalität abdecken. Positiv ist zu bemerken, dass die Qualität der eingesetzten Module durchgehend relativ hoch ist und es keine Ausreißer nach unten gibt.
  • 8. Analyse anonymized.at von integer_net GmbH Seite 8 2 Analyseergebnisse 2.1 Sicherheit 2.1.1 Server Der Server konnte mangels Zugriff nicht geprüft werden. Von außen wurden keine Probleme festgestellt. 2.1.2 Basissystem Die Magento-Version 1.14.0.1 ist relativ aktuell. Alle relevanten Sicherheitspatches sind eingespielt. Bei der Analyse auf Core-Hacks ist ein offensichtlich erfolgreicher Hack aus dem Mai 2015 aufgefallen. Über die vom Angreifer ausgenutzte Sicherheitslücke können wir nur spekulieren – es könnte sowohl ein zu spät einge- spielter Sicherheitspatch sein, als auch ein geknackter Admin-Account. Auch eine Sicherheitslücke außerhalb von Magento ist denkbar. Das lässt sich leider nicht mehr nachvollziehen. Durch geeignete Maßnahmen hätte der Angriff allerdings verhindert (Eingeschränkte Dateirechte für den Web- User) oder schneller bemerkt (regelmäßige Analyse auf Veränderungen am Core-Code) werden können. Es wurden bereits erfolgreich Maßnahmen zum Entfernen des Schadcodes durchgeführt. Ansonsten sind keine relevanten Sicherheitslücken öffentlich bekannt. 2.1.3 Eingesetzte Module Die Analyse der eingesetzten Module hat keine Schwachstellen ergeben. 2.2 Qualität 2.2.1 Konfiguration Bei der Konfiguration des Magento-Systems wurde im Großen und Ganzen nicht viel falsch gemacht. Folgende Punkte sind aufgefallen: - Die Funktion „Flat Catalog“ für eine schnellere Auslieferung von Produkt- und Kategoriedaten ist deak- tiviert. Aus Performancegründen sollte sie aktiviert sein. - Aus Sicherheitsgründen wäre eine abgewandelte Admin-URL sowie die Entfernung / Deaktivierung des Magento-Connect-Managers wichtig (siehe http://www.integer-net.de/warum-man-keine-module- ueber-den-magento-connect-manager-installieren-sollte/) - CSS-Dateien und JS-Dateien sollten zusammengefasst werden, um weniger Requests und damit eine höhere Performance zu erzielen. 2.2.2 Layout und Template Template Das Template besteht in Magento aus einer Mischung aus PHP und HTML in Dateien mit der Endung .phtml. Dazu kommt die Strukturierung dieser Template-Dateien mit Hilfe von Layout-XML-Dateien. Schwierig für die Analyse und später auch für die Weiterentwicklung ist die Tatsache, dass sich dutzende Si- cherheitskopien verschiedener Dateien in den Verzeichnissen befinden. Üblicherweise verwendet man für diesen Zweck eine Versionsverwaltung wie Git, Mercurial oder SVN. Beispiele:
  • 9. Analyse anonymized.at von integer_net GmbH Seite 9 Die Qualität des Templates ist sehr durchwachsen, tendenziell aber eher schlecht. Positiv ist, dass der Fallback- Mechanismus von Magento genutzt wird und nur die Dateien in das eigene Theme-Verzeichnis kopiert wurden, die auch Anpassungen erfahren haben. Alle anderen Dateien bleiben updatefähig. Für die Layout-XML-Dateien wurde dieses Konzept leider nicht durchgezogen, sodass größere Dateien wie ca- talog.xml, checkout.xml oder page.xml komplett, mit nur geringen Anpassungen, kopiert sind. Leider weisen einige Template-Dateien größere Schwächen auf. Die größten Probleme sind: - Umsetzung kompletter Funktionen in phtml-Dateien. Aufgrund der Trennung von Struktur, Funktion und Layout sollten diese Funktionen in passenden Blocks bzw. Helpern umgesetzt werden. Beispiele: o app/design/frontend/anonymized/default/template/catalog/category/view.phtml o app/design/frontend/anonymized/default/template/amshopby/price.phtml o app/design/frontend/anonymized/default/template/page/2columns-left.phtml - Integration langer Javascript-Bereiche direkt im Template statt in separaten Javascript-Dateien: o app/design/frontend/anonymized/default/template/ec/header.phtml o app/design/frontend/anonymized/default/template/page/html/overlay.phtml
  • 10. Analyse anonymized.at von integer_net GmbH Seite 10 o app/design/frontend/anonymized/default/template/page/2columns-left.phtml - Performance-Probleme dadurch, dass innerhalb von Schleifen Produkte oder Kategorien neu geladen werden, was einfach vermieden werden kann. Beispiele: o app/design/frontend/anonymized/default/template/catalog/category/list.phtml o app/design/frontend/anonymized/default/template/catalog/navigation/left.phtml o app/design/frontend/anonymized/default/template/catalog/product/list/upsell.phtml o app/design/frontend/anonymized/default/template/catalog/product/list/related.phtml CSS Für CSS wird der Präprozessor LESS verwendet, was gegenüber dem Standard-CSS von Magento ein deutlicher Fortschritt ist und strukturierteres Arbeiten ermöglicht. Die Codequalität ist in Ordnung; leider sind einige leicht vermeidbare Fehler enthalten. JavaScript Der mit jQuery umgesetzte JavaScript-Code ist in Ordnung und immerhin modulweise strukturiert. HTML Die Prüfung des HTML-Codes mit dem W3C Validator hat je nach geprüfter Seite zwischen 35 und 211 (http://www.anonymized.at/blendtec-classic-575-hochleistungsstandmixer?va=8486) Fehler gefunden. Hier handelt es sich größtenteils um Nachlässigkeiten bei der Frontend-Entwicklung – Fehler, die größtenteils mit geringem Aufwand vermeidbar wären. 2.2.3 Fremdmodule - Größtenteils vernünftige Qualität - Sehr (zu) hohe Anzahl - Updatefähigkeit ungewiss 2.2.4 Individuelle Module - Größtenteils mäßige bis vernünftige Qualität - Teilweise unerfahrene(r) Entwickler im Einsatz 2.2.5 Skripte im Hauptverzeichnis Im Hauptverzeichnis finden sich mehrere PHP-Dateien, die auch von außerhalb per Browser aufrufbar sind. Auch wenn dies im konkreten Fall kein aktuelles Risiko dar- stellt, widerspricht dies doch den „Best Practices“. Systemoperationen sollten immer zumindest per Passwort geschützt sein, damit mögliche Sicherheitslücken oder Opera- tionen mit hoher Systemlast nicht ausgenutzt werden können. Kritisch ist in meinen Augen die Datei cron_admin.php. Der Aufruf der URL http://www.anonymized.at/cron_admin.php führt zu einer Auflistung aller Magento- Cronjobs. Diese Informationen sollten nicht frei verfügbar im Internet abrufbar sein, da sich damit Rückschlüsse auf eingesetzte Module und Technologien ziehen lassen. Die Qualität der Skripte ist durchwachsen – die kleineren Skripte, die nur eine Metho- de in einem Magento-Model aufrufen (z.B. crontest.php), sind okay, während v.a. das Skript cronprice.php relativ schlechte Qualität mit direkten SQL-Anweisungen beinhal- tet. Die Skripte sollten zumindest in das dafür vorgesehen Verzeichnis „shell/“ verschoben werden, sodass sie nur noch per Kommandozeile oder per Cronjob, aber nicht mehr im Browser aufgerufen werden können.
  • 11. Analyse anonymized.at von integer_net GmbH Seite 11 2.3 Updatefähigkeit 2.3.1 Überschriebene Kerndateien Leider befinden sich mehrere Überschreibungen von Kerndateien im Repository. Hundertprozentig lässt sich die genaue Zahl der Core-Hacks nicht bestimmen, da nicht alle Patches für uns verfügbar sind und es keinen eindeutigen Stand zum Vergleich gibt. Beispiele für überschrieben Kerndateien: - app/code/core/Mage/Catalog/Model/Layer.php - app/code/core/Mage/Core/Model/Config.php - app/code/core/Mage/Sales/Model/Order.php Dateien, in denen nur Kommentare oder Logging-Aufrufe hinzugefügt sind, habe ich nicht aufgeführt. Die aufgeführten Dateien sollten kurzfristig analysiert und bereinigt werden, da die Änderungen bei zukünfti- gen Updates überschrieben werden. Inwiefern Dateien von gekauften oder kostenlos heruntergeladenen Modulen verändert wurden, lässt sich momentan leider nicht bestimmen, da nicht alle Original-Module vorliegen. Mit großer Wahrscheinlichkeit wurden Dateien in externen Modulen angepasst, wodurch sich diese Module nicht mehr gefahrlos aktualisie- ren lassen (z.B. bei Inkompatibilitäten zu neueren Magento-Versionen). Das Vorhandensein der folgenden Dateien lässt sehr deutlich darauf schließen: - app/code/community/Fooman/GoogleAnalyticsPlus/Block/2015-01-30_Ga.php - app/code/community/Anaraky/Gdrt/Block/_Script.php Solcherart modifizierte Module lassen sich leider nicht mehr ohne größere Aufwände mit neuen Versionen der Hersteller aktualisieren. 2.3.2 Dateien in app/code/local/Mage/ Zwei entsprechende Dateien wurden gefunden: - app/code/local/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Form.php - app/code/local/Mage/Page/Block/Html/Footer.php In beiden Fällen wäre eine andere Lösung möglich gewesen. Diese Dateien sollten vor einem Update entfernt werden und die Änderungen durch andere Lösungen ersetzt werden. Hintergrund ist, dass es sich hier (neben Core-Hacks) ebenfalls um eine sehr schlechte und wenig updatesichere Art handelt, Magento-Code zu modifizieren. Mit Rewrites und Event/Observer stehen deutlich bessere Metho- den zur Verfügung. 2.3.3 Rewrites Die Anzahl der Rewrites im System ist mit über 60 sehr hoch. Innerhalb dieser Rewrites gibt es drei nicht aufge- löste Konflikte, wo also mindestens eine Funktionalität jeweils nicht so funktionieren kann wie gedacht. Die folgenden Klassen werden überschrieben und kommen nicht zum Einsatz: - Conlabz_Useroptin_Model_Newsletter_Subscriber - Ebizmarts_MageMonkey_Model_Subscriber - Mango_Categoryattributes_Block_Adminhtml_Catalog_Category_Tab_Attributes 2.3.4 Struktur der Template-Dateien Nur angepasste PHTML-Dateien wurden ins Theme-Verzeichnis kopiert – gut. Dennoch befinden sich unter diesen Dateien mehrere, in denen bei einem Update Anpassungen vorgenommen werden müssen, beispiels- weise um den mit Magento 1.8 eingeführten Form Key zu unterstützen. Dies lässt sich aber üblicherweise nicht vermeiden, hier wurde nichts falsch gemacht.
  • 12. Analyse anonymized.at von integer_net GmbH Seite 12 2.3.5 Struktur der Layout-XML-Dateien Manche Layout-XML-Dateien wurden komplett ins individuelle Theme kopiert und dort angepasst. Das führt dazu, dass bei einem Update die Dateien erneut abgeglichen werden müssen. Andere Layout-Dateien sind hingegen nicht betroffen. Hier sind für eine komplett saubere Umsetzung noch Arbeiten notwendig, um die Anpassungen in eigene Layout-XML-Dateien zu übertragen und nicht die Kerndateien zu verwenden.
  • 13. Analyse anonymized.at von integer_net GmbH Seite 13 3 Fazit und Handlungsempfehlung 3.1 Gesamtzustand und aktuelle Probleme Der Shop ist eindeutig historisch gewachsen, im positiven wie im negativen Sinn, wobei ein Großteil der Zusatz- funktionalität aus gekauften bzw. heruntergeladenen Modulen besteht. Nur ein relativ kleiner Teil wurde pro- jektspezifisch umgesetzt. Die Folge davon ist, dass es momentan eine große Menge an inhomogenem, relativ schlecht wartbaren Code gibt, der nur bedingt gut miteinander funktioniert. Ein großes Problem ist zurzeit auch, dass im Shop relativ viel „Müll“ in Form von deaktivierten und nicht (mehr) verwendeten Modulen existiert, was den Shop unübersichtlich und die Weiterentwicklung aufwändiger und fehleranfälliger macht. Auch die fehlende Versionsverwaltung bzw. das Vorliegen einer Vielzahl von Sicher- heitskopien modifizierter Dateien ist negativ für die Übersicht und die Wartbarkeit. Die Updatefähigkeit auf neuere Magento-Versionen ist derzeit nicht gegeben, da in der bisherigen Betreuung des Shops einige Fehler (z.B. Core-Hacks) gemacht wurden. Der Shop ist aktuell lauffähig, behindert jedoch die zukünftige Weiterentwicklung deutlich. 3.2 Empfehlungen In jedem Fall sollten folgende Maßnahmen kurzfristig durchgeführt werden: - Umzug des Shops auf einen anderen Server, da wir wegen der Sicherheitsprobleme nicht sicher sein können, dass der jetzige Server nicht kompromittiert wurde - Einführung einer Versionsverwaltung - Entfernung deaktivierter Module und Sicherheitskopien - Verschieben der Skripte im Hauptverzeichnis in das Verzeichnis „shell/“ Soll der aktuelle Shop in den nächsten Monaten weiter gepflegt werden, empfehlen wir zusätzlich folgende Maßnahmen: - Entfernung der Core Hacks an Magento-Kerndateien und Umsetzung als Module - Entfernung der Dateien in app/code/local/Mage und Umsetzung als Module - Entfernung der Kopien von Kerndateien in app/design/frontend/anonymized/default/layout und Um- setzung als eigenständige Layout-XML-Dateien - Auflösung der Rewrite-Konflikte - Behebung der größten Probleme im Template - Weitere Aufräumarbeiten (z.B. Entfernung von Logging-Aufrufen) - Prüfung, ob Module entfernt werden können - Umwandung von Inline-JavaScript in JS-Dateien - Evtl. Einführung einer neuen Projektstruktur mit Trennung von Core-Code und einzelnen Modulen - Update auf neueste Magento-Version