Joomla/WordPress gehackt, was nun?

Vorgeschichte

Neulich stand ich vor der Situation, drei gehackte Joomla Installationen wiederherstellen zu müssen. Die Content-Management-Systeme befanden sich mehr als 1,5 Jahre nach Ende des Supports noch in der Version 2.5.28 und lagen auf dem gleichen Webspace.
Nicht nur, dass sich das Aktualisieren schwierig gestaltete, da der Auto-Updater nicht funktionierte und direkte Updates auf Joomla 3.6 nicht möglich waren, stand ich nun vor der Herausforderung die veränderten Dateien zu finden und zu bereinigen. Der Hack wurde über mehrere Monate nicht bemerkt und das System war zu weiten Teilen infiziert, Backups lagen keine vor.

Eins vorab: Es ist unwahrscheinlich alle kompromittierten Dateien zu finden und es stellt einen großen Aufwand dar. In den meisten Fällen ist es besser, die Software komplett neu aufzusetzen und die Website von Grund auf neu zu erstellen.

Hier möchte ich nun darlegen wie ich zur Bereinigung und Wiederherstellung vorgegangen bin. Gute Dienste haben mir vorwiegend die Tools grep und sed geleistet.  Diese Anleitung lässt sich natürlich auch auf andere Content-Management-Systeme übertragen, ein gehacktes WordPress lässt sich auf die gleiche Art wiederherstellen.

Alle genutzten Tools sind Bordmittel einer jeden vernünftigen Linux-Distribution. Windows Nutzer können ein Live-System, eine Virtuelle Maschine oder ihren Webserver nutzen.

Disclaimer: Obwohl ich im folgenden häufiger den Begriff „Hacker“ benutze, meine ich damit keinesfalls die ethischen Hacker, sondern den umgangssprachlichen „bösen“ Cracker.

Gehacktes CMS wiederherstellen

Schritt 1: Website offline nehmen

Sperren Sie mittels .htaccess oder ähnlicher Methoden sämtliche Verzeichnisse für Besucher oder richten Sie eine Weiterleitung ein. Sie können dazu folgende htaccess-Regeln nutzen:

Ersetzen Sie die IP-Adresse „123.45.67.89“ durch Ihre Eigene. Alle anderen Besucher werden nun auf die Seite „fehler.php“ weitergeleitet.

Schritt 2: Backup der Daten

Nachdem eine Joomla Installation gehackt und dies bemerkt wurde, sollten Sie unbedingt und schnellstmöglich ein Backup der Daten und Datenbank anlegen. Hierzu eignet sich zum Beispiel die Software Akeeba Backup. Bereinigt man die Dateien, ohne vorher eine Sicherung zu erstellen, besteht zu jeder Zeit die Gefahr dass der/die Hacker versuchen alle Ihre Spuren zu verwischen und sämtliche Daten löschen. Auch für eventuelle Strafanzeigen ist es wichtig ein Backup mit allen infizierten Daten zu haben.

Sollte ein Backup der Daten mit Akeeba nicht möglich sein, bleibt noch ein manuelles Sichern über FTP, MySQL, phpMyAdmin o.ä.

Schritt 3: Ändern aller Passwörter

Ändern Sie alle Passwörter. Das beinhaltet Passwörter von Benutzern, FTP Passwörter, SSH Passwörter, MySQL Passwörter etc.

Informieren Sie alle Nutzer über die Probleme und zwingen Sie diese, wenn möglich, ihr Passwort zu ändern.

Schritt 4: Analyse des Schadens

Wie Sieht der Eingeschleuste Schadcode aus?

Möchte man Probleme beseitigen, muss man sie erkennen: der eingeschleuste Schadcode kann die unterschiedlichsten Formen annehmen, ist aber meist auf den ersten Blick ersichtlich. Im Folgenden finden sich ein paar Beispiele. Im Interesse der Sicherheit werde ich hier nur Ausschnitte aus Dateien als Bilder einfügen:

Schadcode 1
Verschleierter Code
Schadcode 2
Schadcode mit Passwort-Login, nur teilweise verschleiert
Schadcode 3
Unlesbarer Schadcode
Schadcode 4
Weiterer verschleierter Schadcode
schadcode5
Kreativer Schadcode mit weiterer „Verschlüsselung“
Fall 1:Backup Vorhanden

Für die Analyse des Schadens sollte man sich viel Zeit nehmen. Sollte die Möglichkeit bestehen die Dateien mit einem Backup vergleichen zu können, bietet sich hier ein rekursiver diff an.

Dafür erstellt man am Besten einen Ordner mit den gehackten Daten, einen Ordner mit dem entpackten Backup und führt folgendes Kommando aus:

In der Datei hacked.txt finden sich jetzt sämtliche Änderungen in allen Unterordnern und Dateien. Anhand der Daten lässt sich eine Beseitigung des eingeschleusten Codes durchführen, auch wenn zwischen Backup und Hack schon Änderungen gemacht wurden.

Fall 2: Kein Backup vorhanden

Hier lässt sich nur manuell prüfen, wo Schadcode eingeschleust wurde. Findet man eine Datei, sollte man versuchen das Muster zu erkennen und sämtliche anderen Dateien nach dem Muster zu durchsuchen. Hierfür nimmt man am besten grep. Dieses Kommando durchsucht alle Dateien und Unterordner des aktuellen Verzeichnisses nach einem gegebenen Muster:

Hilfreiche Kommandos um Infizierte Dateien zu finden

Finden die in den letzten n-Tagen verändert wurden:

Dieses Kommando listet alle Dateien und Ordner auf, die in den letzten 24 Stunden verändert wurden. Die Anzahl der Tage lässt sich über den Parameter mtime einstellen.

Finden aller PHP-Dateien die nicht mit einem Kommentar beginnen

In meinem vorliegenden Fall wurde viel Schadcode direkt hinter das PHP-Start-Tag injiziert. Das ergibt natürlich Sinn, denn es ist davon auszugehen, dass die meisten PHP Dateien mit <?php  beginnen und eine blinde Injektion von Schadcode nach diesem Tag geht fast immer gut. Außerdem liegt einem böswilligen Hacker meist nichts daran, den Code zu erklären den er eingeschleust hat 😉 .

Dieses Kommando listet alle php-Dateien auf, die nicht mit einem Kommentar beginnen, gibt die ersten 10 Zeilen der Datei sowie den Dateinamen aus und schreibt alles in die Datei hacked.txt. Vielen Dank an anubhava für den RegEx.

Finden verdächtiger Dateien

Suche anhand verwendeter Funktionen

Auch hier leistet grep wieder wahre Wunder. Durchsuchen Sie Dateien, wie oben beschrieben und prüfen Sie diese auf folgende häufig von Hackern verwendete Funktionen:

  • mail()
  • fsockopen()
  • pfsockopen()
  • stream_socket_client()
  • exec()
  • system()
  • passthru()
  • shell_exec()
  • eval()
  • base64_decode()
  • str_rot13()
  • ord()
  • chr()
  • hexdec()

Eine Suche nach diesen Funktionen wird bei einem Content-Management-System sehr viele Resultate liefern und es ist sehr aufwändig alle zu analysieren.

Auch die Variablen $_COOKIE, $_GET, $_POST und $_REQUEST sollte man auf jeden Fall prüfen.

Häufig findet man auch einen @-Operator in der manipulierten Zeile, der das Logging unterbinden soll.

Gute Dienste leistet in diesem Kontext auch jamms (nicht nur für Joomla!).

Suche anhand von Dateinamen

Oft wählen Angreifer Dateinamen unauffällige Dateinamen die in Log-Dateien nicht auffallen. Prüfen Sie Ihre Unterverzeichnisse auf Dateinamen wie:

  • 404.php
  • admin.php
  • ajax.php
  • cache.php
  • contacts.php
  • controller.php
  • config.php
  • configuration.php
  • css.php
  • defines.php
  • dump.php
  • do.php
  • error.php
  • file.php
  • functions.php
  • global.php
  • help.php
  • list.php
  • model.php
  • index.php (dort wo diese nicht hingehört)
  • solo.php
  • test.php

Die Dateinamen enthalten häufig auch Zahlen. Finden Sie also eine Datei wie index14.php, error26.php oder cache7.php sollte sofort allerhöchste Alarmstufe herrschen.

Schritt 5: Installation von Updates

Installieren Sie alle verfügbaren Updates, prüfen Sie jede Erweiterung von Hand auf neue Versionen. Trennen Sie sich von nicht länger unterstützten Erweiterungen und suchen Sie  Ersatz für veraltete Plugins, Komponenten und Module.

Schritt 6: Analyse der Log-Files

Wird der Angriff zeitnah bemerkt, sollte zunächst versucht werden, den Angriff anhand der Log-Dateien nachzuvollziehen. Dies gibt einen Einblick in eventuell weiterhin vorhandene Sicherheitslücken. Oft sind die problematischen Codezeilen jedoch so gut versteckt, dass der Provider keine Log-Dateien für den Angriffszeitpunkt mehr zur Verfügung stellt. Sind die Hacker nicht auf Daten oder blinde Zerstörung aus, ist Ihnen oft daran gelegen, möglichst unbemerkt zu bleiben um den Server so lange wie möglich nutzen zu können.

Ist der Schadcode (teilweise) beseitigt, ist die Arbeit lange noch nicht getan. Nun heißt es überwachen der Logs und das am besten mehrmals täglich. Eine Anfrage an den Webserver sieht in den Log-Dateien in der Regel wie folgt aus:

Erklärung der Anfrage: Typ der Anfrage, Angefragte Seite der Domain, HTTP Status Code, Größe der Anfrage in Bytes

Interessant sind vor allem POST-Requests die nicht auf die Datei index.php, sondern gezielt auf andere Dateien gehen und mit Status 200 beantwortet werden. Diese Dateien sind in jedem Fall manuell zu prüfen und das nach jeder Anfrage am besten mehrere Wochen lang.

Nach dem Hack ist vor dem Hack

Achten Sie immer darauf, dass System und Erweiterungen stets auf dem neusten Stand sind. Installieren Sie Zusatzsoftware für besseres Logging, zum Schutz gegen Angriffe und zum Prüfen der Datei-Integrität. Und am wichtigsten: erstellen Sie regelmäßig Backups, wenn möglich automatisiert.

Zusammenfassung:

  1. Website deaktivieren
  2. Backup
  3. Passwörter ändern
  4. Schadcode entfernen
  5. Updates installieren
  6. Logs prüfen

Ist das alles erledigt, stehen die Chancen gut, dass die Angreifer in die Flucht geschlagen wurden. Eine Garantie dafür gibt es aber keinesfalls.

Ihre Website wurde gehackt?

Kontaktieren Sie uns mit den Details und fordern Sie eine unverbindliche Beratung an.

Warum responsive Design so wichtig ist

Responsive Design vereint verschiedene technische und gestalterische Paradigmen um eine optimale Darstellung auf jedem Endgerät zu garantieren. Mittels neuer Techniken wie HTML5, CSS3 (insbesondere durch Media Queries) und JavaScript ist es möglich, flexibel auf spezifische Anforderungen wie Displaygröße und Auflösung von Smartphones, Tablet-, Laptop- und Desktop PCs zu reagieren.

Auch wenn es noch utopisch erscheint, eine Optimierung auf Geräte des Internet of Things (IOT) wie z.B. Smartwatches, Fernseher, Ebook-Reader aber auch Kühlschränke ist denkbar und für einige Unternehmen und Geschäftsbereiche sinnvoll.

Das Ziel des responsive Designs ist die bestmögliche Gestaltung des Nutzererlebnisses. Dabei wird vor allem Wert auf eine gute Übersichtlichkeit und Usability (Nutzerfreundlichkeit) gelegt. Aber auch Faktoren wie begrenztes Datenvolumen und Bandbreite des Internetanschlusses werden in Betracht gezogen.

Aber nicht nur die Endnutzer schätzen die Vorteile des responsive Designs. Auch Suchmaschinen (insbesondere Google) reagieren positiv auf die Optimierung für mobile Endgeräte. Mittlerweile wird „mobile-friendly“ als Ranking-Signal genutzt. Nicht optimierte Seiten mit statischen Layouts haben das Nachsehen.

Vorteile von Responsive Design Gegenüber rein mobilen Websites

„Klassische“ mobile Websites bestehen nutzen mehrere Templates, oder bestehen unabhängig von der Desktop-Version. Dies bedeutet einen immensen Mehraufwand in der Unterhaltung und Pflege. Im responsive Design entfällt dieser Nachteil. Es muss sich lediglich um eine Version des Onlineauftrittes gekümmert werden.

Mobile Internetnutzung nimmt zu

Mit der zunehmenden Verbreitung von Smartphones und Tablets seit 2007 steigt auch die Zahl der mobilen Internetnutzer stetig.

Laut der ARD/ZDF Onlinestudie nutzten im Jahr 2015 beinahe fünfzig Prozent der 14-29 Jährigen und fast ein Viertel der 30-49 Jährigen täglich das Internet mit mobilen Geräten. Die Gesamtverweildauer bei der der Online-Nutzung beträgt dabei im Schnitt von allen Nutzergruppen (auch 50+) ca. 160 Minuten pro Tag.

Ist meine Website mobil optimiert bzw. responsive?

Um zu testen, ob ihre Website fit für Smartphones und andere Geräte angepasst ist, können Sie folgende kostenlose Tools nutzen:

Sollten Ihre Website diese Tests nicht bestehen, zögern Sie nicht mit uns Kontakt aufzunehmen. Wir beraten Sie unverbindlich und kümmern uns unkompliziert und schnell um die Optimierung.

Update von Joomla 2.5 auf 3.6

Ich hatte kürzlich das Problem, dass sich mehrere vorher kompromittierte aber inzwischen bereinigte Joomla Systeme (Version 2.5.28) nicht auf eine aktuelle Version bringen lassen wollten. Der übliche Weg über das Umstellen der Langzeit Support Version auf Kurzzeit-Support über die Komponente „Joomla Aktualisierung“ funktionierte nicht. Eine neue Version war angeblich nicht verfügbar. Folgende Meldung wurde angezeigt:

Keine Aktualisierungen verfügbar
Es ist bereits die aktuellste Joomla!-Version 2.5.28 installiert.

Auch ein manuelles Update auf Version 3.6 war nicht erfolgreich. Im folgenden findet sich eine einfache Anleitung wie es trotzdem funktioniert alte Systeme auf den aktuellen Stand zu bringen.

Update von Joomla 2.5.x auf 3.6

  1. Aktualisierung Joomla von 2.5.x auf 2.5.28 auf gewohntem Wege
  2. Aktualisierung des CMS von 2.5.28 auf Version 3.4 über den Erweiterungsmanager mittels Upload dieser Datei 3.4.0-Stable-Update_Package.zip
    Backup: 3.4.0-Stable-Update_Package.zip
  3. Update von Version 3.4 auf eine aktuelle Version (z.B. über die Meldung im Kontrollzentrum)
    joomla update message

 

SEO: Suchmaschinenoptimierung beschleunigen

SEO-Maßnahmen brauchen in aller Regel viel Zeit. Bis zu einer spürbaren Verbesserung der Platzierung in den Suchergebnissen kann ein halbes Jahr und mehr vergehen.

Warum dauert es so lange, bis sich Fortschritte im Ranking bemerkbar machen?

Nach dem Aufkommen der großen Suchmaschinen wie MSN, Google und Yahoo setzte eine Verhaltensänderung der Nutzer ein. Der Trend bewegte sich weg vom Webkatalog und hin zur direkten Suche nach Websites.

Viele Webmaster nutzten die Schwachstellen der damals noch jungen, wenig intelligenten Suchalgorithmen. Durch unlautere SEO-Maßnahmen wie dem Verlinken häufig gesuchte Begriffe und Keywords verbreiteten Sie Spyware, Adware und Werbung. Relevanter Inhalt war in bestimmten Bereichen teilweise kaum noch zu finden. Dies führte natürlich bei den Nutzern von Suchmaschinen zu großer Unzufriedenheit.

Aufgrund dessen entwickelten die Suchmaschinenbetreiber neue Algorithmen, die Spam unterbinden sollten. Eine Maßnahme war das verzögerte Ranking. Dies wurde eingeführt um dem oben genannten Keyword-Spam entgegenzuwirken. Spammer konnten nicht mehr unmittelbar auf Trends reagieren. Die Verzögerung ist natürlich ärgerlich für einige Nutzergruppen, da die Ergebnisse der SEO nun nicht mehr direkt nachvollziehbar sind.

Viele Kunden wünschen sich aber eine unverzügliche Verbesserung ihrer Resultate. Welche Möglichkeiten bieten sich da?

Gekaufte Backlinks

Viele unseriöse Agenturen aber auch SEO-Tools werben mit kaufbaren Backlinks von Websites mit hohem Pagerank. Was ist davon zu halten? Nichts. Sparen Sie sich das Geld und investieren Sie in sinnvolle und langfristige Maßnahmen.

Die Erklärung hierfür: Der Pagerank ist tot. Bedenken Sie, dass jeder diese Links kaufen kann und auf den Websites mitunter hunderte andere Seiten verlinkt sind.

Reine Link-Netzwerke wie sie von einigen SEO-Agenturen betrieben und bei vielen SEO-Tools beworben werden, haben langfristig keine Perspektive. Sie führen, sollte es tatsächlich zu einer kurzfristigen Verbesserung des Rankings kommen, zu einer Abwertung der Position sobald Google diese erkennt. Und sie können davon ausgehen, dass das früher oder später der Fall sein wird. Google kann es sich leisten, die hellsten Köpfe einzustellen und die Suchalgorithmen werden ständig und mit Hochdruck verbessert. Selbst vorausgesetzt, der „Betrug“ würde nicht auffliegen – wollen Sie, dass Ihre Unternehmenswebsite neben Werbung für Potenzmittel, Pornographie und Online-Kasinos zu finden ist? Nicht nur, dass Google ihre Website damit in Verbindung bringen wird – suchen potentielle Kunden nach Ihrer Website, werden Sie die Verlinkungen ebenfalls finden.

Was bleibt? Werbung!

Auch wenn es überholt erscheint, klassische Werbung in TV und Printmedien generiert viele Klicks. Leider sind diese Maßnahmen oft aufwändig, teuer und erfordern ein hohes Maß an Planung.

Nutzen Sie Social Media und animieren Sie Freunde, Bekannte und Kunden zum Teilen Ihrer Inhalte. Werden Sie auf Plattformen wie Foursquare und Facebook aktiv. Diese bieten ihren Kunden die Möglichkeit, bei Ihnen „einzuchecken“. Ihr Unternehmen und Ihre Website erscheinen damit wesentlich relevanter, was einen wahren SEO-Boost zur Folge haben wird.

Lassen Sie andere Menschen an Ihrem Fachwissen teilhaben. Kontaktieren Sie bekannte Websites und Blogs und schreiben Sie Gastbeiträge. Auch durch Beantwortung von Fragen in Foren und Kommentare in Blogs lassen sich Links platzieren. Helfen Sie den Nutzern, bleiben Sie nahe am Thema und liefern Sie nur relevante Antworten. Damit generieren Sie schnelle Resultate und bauen nebenbei langfristig hochqualitative Links auf.

Unverbindliche Beratung zu SEO und Werbekampagnen anfordern

SEO: Basismaßnahmen

In diesem Beitrag möchte ich die grundlegenden Methoden und wichtige Elemente einer Website für die Suchmaschinenoptimierung (SEO) vorstellen. Oft reichen schon ein paar Anpassungen aus um ein wesentlich besseres Ergebnis in den großen Suchmaschinen wie Google, Bing und Yahoo zu erreichen.

SEO geht dabei stark mit der Verbesserung der Benutzererfahrung und barrierefreiem Webdesign einher. Behalten Sie immer im Hinterkopf, dass Sie die Website für Menschen (z.B. Ihre Kunden) und nicht für Suchmaschinen gestalten. SEO ist lediglich eine unterstützende Maßnahme um Menschen auf Ihre Website zu führen.

Für die vorgestellten SEO-Techniken beziehe ich mich im folgenden auf die fiktive Gebäudereinigung „ABC GmbH“ um ein paar anschauliche Beispiele geben zu können.

1. Form

1.1 Der Titel der Website

Der Titel einer Website wird über den HTML-Tag „title“ festgelegt. Er befindet sich im Kopf <head> der Website. Da er das erste ist, was dem Nutzer bei einer Suchanfrage ins Auge springt, sollte er mit besonderer Sorgfalt gewählt werden und aussagekräftig sein. Die Länge des Seitentitels sollte ca. 50-60 Zeichen betragen. Im Titel der Startseite sollten die wichtigsten Produkte und Dienstleistungen eines Unternehmens vorkommen.

Der Titel <title>Herzlich willkommen auf unserer neuen Website</title> ist bestenfalls ungeeignet und besitzt keine Aussage über den Inhalt. Aber unter  <title>ABC GmbH Chemnitz, Gebäudereinigung und Hausreinigung</title> kann sich der Benutzer der Website etwas vorstellen und die Suchmaschine wird die Firma „ABC Gebäudereinigung“ mit den Schlüsselworten „Chemnitz“ und „Hausreinigung“ verbinden. In den meisten Content-Management-Systemen gibt es eine Textfeld zum Ändern des Titels ohne Programmierkenntnisse.

1.2 Die Meta-Description

Wie auch der Titel, befindet sich die Meta-Description im Kopfbereich (<head>) der Website. Sie enthält die Inhaltsbeschreibung der Website, wie sie in einer Suchmaschine angezeigt werden soll. Es empfiehlt sich, für jede Unterseite der Webpräsenz eine eigene Meta-Description anzulegen. Der Inhalt der Seite sollte in kurzen Sätzen (135-160 Zeichen) unter Nennung wichtiger Schlüsselworte beschrieben werden. Das Format sieht dabei aus wie folgt:
<meta name="description" content="Hier steht die Beschreibung der Website">. In den meisten Content-Management-Systemen gibt es ein Textfeld zum Ändern der Meta-Description ohne Programmierkenntnisse.

Wird keine Meta-Description gesetzt, versucht die Suchmaschine selbst eine Beschreibung zu generieren. Das kann sich schlecht auf die SEO auswirken. Hier zwei Beispiele für schlechte Resultate durch fehlende Meta-Description:

SEO-Fehler: fehlende Meta-Description

Fehlende Meta-Description, ungünstige SEO

Eine gute Meta-Beschreibung für die fiktive ABC-GmbH wäre z.B.:

ABC GmbH, ihr Spezialist für Glasreinigung, Gebäudereinigung, Büroreinigung, Hausmeisterservice, Entrümpelung und Treppenhausreinigung in Chemnitz

1.3 Meta-Keywords (Schlüsselwörter)

Viele unseriöse oder unwissende Agenturen bezeichnen es schon als SEO, wenn sie die Website der Kunden mit Meta-Keywords vollstopfen. Erreicht wird dabei eigentlich genau das Gegenteil. Suchmaschinen stehen im Verdacht Websites mit zu vielen Keywords abzustrafen. Das kommt daher, dass diese Schlüsselwörter Anfang bis Mitte der 2000er Jahre häufig von Spammern missbraucht wurden. Daher haben sie quasi keine Gewichtung mehr für die SEO. Die maximale Anzahl an Meta-Keywords sollte sich an der Länge des geschriebenen Textes orientieren und sie sollten nur Wörter enthalten die auch im Text der Website vorkommen. Eine Verwendung von mehr als 20 Schlüsselwörtern ist nicht ratsam.

Wie der Titel und die Meta-Description finden sich die Keywords im Kopf der Seite und werden durch Kommas getrennt im Format <meta name="keywords" content="schlüsselwort, schlüsselwort2" /> notiert. Es empfiehlt sich eine Kleinschreibung der Keywords in Einzahl. Die zusätzliche Nennung von „schlüsselwörter“ im obigen Beispiel ist nicht notwendig.

2. Inhalt

Suchmaschinen lieben Inhalt, da sie in erster Linie Informationen vermitteln wollen. Beschreiben Sie Ihr Unternehmen so gut Sie können, erklären Sie ihre Produkte in kurzen, leicht verständlichen Sätzen. Zeigen Sie, dass sie über Fachwissen verfügen und lassen Sie das Internet daran teilhaben.

Hochwertiger, einzigartiger Inhalt ist das A und O für eine gute Website, und der Schlüssel zu erfolgreicher SEO.

2.1 Struktur des Inhaltes

Achten Sie auf eine konsistente Textstruktur und nutzen Sie ausschließlich die für die Strukturierung geeigneten HTML Elemente.

Häufige Fehler und Probleme in der Strukturierung von Inhalten:

  • Überschriften:
    1. manuelle Formatierung statt Nutzung der Formatvorlagen (HTML Tags <h1>-<h6>)
    2. mangelhafte Struktur der Überschriften (z.B. fehlende <h2> Elemente)
  • Listen: Neue Zeile, gefolgt von Bindestich oder Zahl statt Nutzung einer Listenfunktion
  • Bilder:
    1. Einfügen ohne Titel
    2. Einfügen ohne Alternativ-Attribute (die Bildbeschreibung ist wichtig, da Suchmaschinen gerade erst lernen, den Inhalt eines Bildes zu deuten)
  • Hyperlinks: Einfügen ohne Titel-Attribut (Hier können noch dezent Keywords platziert werden)
2.2 Keyword-Dichte

Verlieren Sie beim Verfassen von Beiträgen nicht ihr Schlüsselwörter aus den Augen, aber übertreiben Sie es nicht. Die optimale Keyword-Dichte (Density) liegt bei 0,5-2,5%. In einem Text über Suchmaschinenoptimierung sollte das Keyword SEO deswegen 0,5-2,5 Mal pro 100 Wörter auftauchen.

Oft wird eine Keyword-Dichte von 3-4% empfohlen. Dies betrifft aber die gesamte (!) Seite inklusive Links und sonstiger Beiträge. In natürlich geschriebenen Texten und wissentschaftlichen Arbeiten liegt die Density deutlich unter 4%. Beiträge mit zu vielen Schlüsselwörtern wirken unnatürlich und vermitteln den Eindruck von geringem Fachwissen. Deswegen werden Beiträge mit zu hoher Keyworddichte meist abgewertet.

SEO: Wie Google und Co. ticken

Suchmaschinenoptimierung (SEO) erfordert einiges an Wissen und Fingerspitzengefühl. Möchte man eine Website für Suchmaschinen optimieren um Platz eins bei Google, Bing, Yahoo und Co. zu erreichen, sollte man zuallererst versuchen zu verstehen, wie eine Suchmaschine aufgebaut ist und funktioniert.

Suchmaschinen bestehen in aller Regel aus zwei Hauptbestandteilen, dem Crawler und der eigentlichen Suchmaschine.

Was ist ein Crawler / Bot / Spider / Indexer?

Der Crawler (auch Spider, Bot, etc.) besteht aus einer Ansammlung von Programmen und Scripten, die mehr oder weniger autonom das Web durchforschen. Man gibt ihm eine Website und er fängt an, die Seite auf relevante Informationen zu durchsuchen. Dabei sendet er alle Daten an den Index der Suchmaschine. Stößt der Crawler auf einen Hyperlink zu einer anderen, nicht besuchten Website, so wird diese weiter durchforstet und auch die Nächste und die Nächste… Dieser Prozess geht so lange weiter, bis der Crawler merkt, dass er sich im Kreis bewegt.

Was ist eine Suchmaschine?

Die eigentliche Suchmaschine ist ein sehr abstraktes und komplexes Konstrukt. Der Aufbau variiert sehr stark. Hauptbestandteil sind verteilte Datenbanken und eine Ansammlung von Programmen und Scripten zum Verarbeiten der Websites und Suchanfragen. Allgemein ist davon auszugehen, dass die Daten, die von Crawler gesendet wurden, stark verarbeitet und in der Datenbank abgelegt werden. Wie das genau vonstatten geht ist dabei gut gehütetes Firmengeheimnis lässt sich aber wie folgt verallgemeinern.

Wie verarbeitet eine Suchmaschine meine Website?

Im ersten Schritt werden alle wichtigen Daten extrahiert. Darunter befinden sich unter anderem:

  • Veröffentlichungsdatum der Website (bzw. letzte Aktualisierung)
  • Welche Daten die Website enthält (Texte, Bilder, Videos…)
  • Qualität des Inhaltes
  • Relevanz für Suchanfragen von Nutzern
  • Ladegeschwindigkeit der Website
  • Links zu anderen Websites
  • Relevanz für Menschen (Links von anderen Websites, Likes/Shares in Sozialen Medien, Wikipedia-Eintrag…)
  • Metadaten (Autor, Beschreibung, Titel…)
  • Strukturierte Daten

Im zweiten Schritt werden die extrahierten Daten mit dem Inhalt der Website verknüpft. Manche SEO-Websites sprechen davon, dass nur die ersten 100 KB eines Dokumentes durchsucht werden. Vielleicht war das auch einmal eine Tatsache, aber da heute (2016) Speicherplatz quasi unbegrenzt verfügbar und im Konzernmaßstab spottbillig ist, sollte man davon ausgehen, dass ausnahmslos alles an Website-Text zwischengespeichert wird.

Wie werden die Suchanfragen bearbeitet?

Sucht ein Nutzer nach einem bestimmten Thema, wird die Anfrage mittels spezieller Algorithmen verarbeitet. Eventuelle Rechtschreibfehler werden korrigiert, Synonyme gesucht und die Anfrage wird interpretiert. Relevante Suchbegriffe werden auf den Wortstamm reduziert und die Ergebnisse somit erweitert. Mit dieser verarbeiteten Anfrage werden nun die Ergebnisse aus dem Index geholt und sortiert (Ranking). Anhand bisheriger Suchanfragen und Nutzerprofile wird zudem eine persönliche Sortierung der Suchergebnisse durchgeführt. Welchen Einfluss welche Daten dabei auf das Ranking und die SEO haben ist unterschiedlich und wird in einem anderen Beitrag noch einmal gründlich behandelt.

Wie sieht meine Website für Google und Co. aus?

Suchmaschinenoptimierung und Barrierfreiheit gehen oft Hand in Hand. Blinde Menschen und Suchmaschinen nutzen Websites auf eine ähnliche Art und Weise. Sie betrachten das Internet ohne Stildateien (CSS) und Bilder. Am nächsten kommt diesem Verhalten das Verwenden eines Textbrowsers wie Lynx.

Screenreader: Darstellung einer Website im Lynx-Browser
Darstellung einer Website mit einem Textbrowser

Für eine erfolgreiche Suchmaschinenoptimierung sollten Sie ihre Website mit einem Textbrowser aufrufen.

Prüfen Sie die Struktur der Beiträge und ob alle Navigationselemente einfach und komplett zugänglich sind. Verwenden Sie, wenn möglich nur eine Navigationsleiste für relevante Inhalte (Links zum Impressum oder Kontaktformular im Footer sind legitim).

Ist die gesamte Website ohne Einschränkung nutzbar, oder sind manche Funktionen oder Informationen nur mit JavaScript, Flash oder ähnlichen Plugins zugänglich?

Achten Sie vor allem  auch auf die ALT-Attribute (=alternative) der Bilder. Diese sind als Bildbeschreibung gedacht und unerlässlich für Blinde. Aber auch für die SEO sind sie nötig, da die Erkennung von Bildinhalten der Suchmaschinen noch in den Kinderschuhen steckt und Bilder ohne Beschreibung ggfs. ignoriert werden.

Sie wollen bessere Suchergebnisse bei Google erzielen?

Fordern Sie eine unverbindliches Angebot zur Suchmaschinenoptimierung (SEO) an:

Welches CMS ist das richtige für mein Projekt?

Unterschiedliche Projekte, unterschiedliche Anforderungen. Im Jungle der Content-Management-Systeme (CMS) kann man als Anfänger ganz schnell verloren gehen. In diesem Artikel möchte ich einige Systeme vorstellen und einen Einblick in die Thematik Content-Management geben.

CMS – was ist das? Brauche ich das?

Als Content-Management-Systeme (zu deutsch: Inhaltsverwaltungssysteme) oder CMS werden Softwarepakete bezeichnet, die den zuständigen Administratoren eine einfache Verwaltung der Inhalte ihrer Website ermöglichen. Texte können damit in den meisten Fällen ohne Programmierkenntnisse und genau so komfortabel wie in einer Textverarbeitung (z.B. Microsoft Word oder LibreOffice Writer) verfasst und geändert werden.
Da den meisten Benutzern diese Systeme vertraut sind, fällt die Bearbeitung der Inhalte leicht und kann schnell vonstatten gehen. Das spart nicht nur Zeit, sondern auch bares Geld: die meisten Änderungen sind so leicht vorzunehmen, dass eine Agentur nach der erstmaligen Einrichtung meist nicht mehr benötigt wird.

Vielleicht wird sich der Eine oder Andere an dieser Stelle fragen: Wenn das alles so einfach ist, kann ich mir dann nicht gleich die Kosten für die Erstellung meiner Website durch eine Agentur sparen? – Diese Frage kann man nur mit „jein“ beantworten. Natürlich ist es möglich: es gibt viele vorgefertigte und kostenlose Themes und Erweiterungen, auch die Konfiguration und Inhalte können selbst erzeugt und übernommen werden. Das Endresultat ist dabei jedoch oft ernüchternd: man sieht, dass Laien am Werk waren. Nicht nur, dass viele Themes mit veralteter Software einherkommen, auch die Konfigurationsmöglichkeiten überfordern Anfänger häufig. Will man ein vernünftiges Endergebnis und auch noch von Suchmaschinen gefunden werden sollte man die Arbeit lieber in professionelle Hände geben und sich die Zeit und Mühe sparen.

Aktuelle Content-Management-Systeme – eine Übersicht

Unter den CMS gibt es große Unterschiede. Einige sind darauf ausgelegt, besonders benutzerfreundlich zu sein, andere glänzen mit einem riesigen Funktionsumfang. Welches Content-Management-System sich für welches Projekt eignet, werde ich in den kommenden Abschnitten beschreiben.

Im Juni 2016 sah die globale Verteilung der Marktanteile laut wappalyzer wie folgt aus:

globale Verteilung der CMS Systeme

  1. WordPress
    Everybody’s Darling – Ursprünglich als Blog-System gedacht, dominiert das sich seit 2003 in Entwicklung befindliche WordPress den weltweiten CMS Markt. Mit einem Anteil von unglaublichen 67 Prozent liegt es auf Platz eins der am häufigsten verwendeten Systeme. Selbst wenn man davon ausgeht, dass drei von vier Websites nur als Blog betrieben werden, liegt WordPress immer noch deutlich vorn. Wie kommt das? WordPress ist nutzerfreundlich und es gibt unzählige Erweiterungen. Aufgrund dessen haben sich viele Freelancer und Agenturen auf dieses System spezifiziert. Dabei wirken die meisten Installationen der Software recht „starr“ in der Struktur und das geschulte Auge erkennt ein WordPress-Systeme meistens auf den ersten (oder zweiten) Blick. Das System eignet sich für kleinere Firmenwebsites mit statischem Layout. Genutzt wird die Software unter vielen anderen von Yahoo!, Digg, eBay, Ford und Samsung – hauptsächlich aber im ursprünglichen Kontext: als Blog.
  2. Joomla!
    Our Darling. Joomla ist historisch gesehen der Nachfolger des CMS Mambo und hat seine Wurzeln damit im Jahr 2000. Seitdem ist viel geschehen: findet man in Foren und Blogs immer noch Einträge darüber dass sich der Umgang mit dem Content-Management-System schwer erlernen lasse, ist es nach unseren Erfahrungen dasjenige, mit dem unsere Kunden am Besten zurechtkommen. Joomla besticht durch seine hohe Flexibilität und belegt hinter WordPress mit ca. 12 Prozent den zweiten Platz im globalen Ranking. Auch für Joomla gibt es eine Fülle kostenloser und kostenpflichtiger Erweiterungen. Das System eignet sich für jede Art von Website, vom Blog über das Firmenportrait bis zum Online-Portal mit mehreren tausend Nutzern pro Stunde. Genutzt wird die Software unter vielen anderen von eBay, IKEA, Sony, McDonald’s und Pizza Hut.
  3. Drupal
    Der dritte Big Player: Drupal steht seit 2001 als Open Source System zur Verfügung. Im deutschen Sprachraum nicht besonders stark verbreitet, eignet es sich besonders für die Erstellung von Plattformen mit Sozialen Komponenten, z.B. Communities. Auch für Drupal gibt es viele Erweiterungen. Das Content-Management ist äußerst flexibel und sehr benutzerfreundlich. Leider wird Drupal häufig unterschätzt und eignet sich ebenfalls wie Joomla für jede Art von Website. Genutzt wird die Software unter anderem von Pfizer, General Electric, ebay, greenpeace und Verizon.
  4. TYPO3
    TYPO3 ist in jeder Hinsicht ein mächtiges CMS. Einerseits das wohl flexibelste Content-Management-System, andererseits sehr groß und ressourcenhungrig. Die immerhin noch zwei Prozent am globalen Anteil kommen zum größten Teil aus Deutschland. TYPO3 wird seit 2001 entwickelt, bezeichnet sich selbst als Enterprise CMS und das ist es auch. Anfängern und kleinen Unternehmen rate ich von diesem System ab, denn egal welche Nutzergruppe, ob Administrator, Editor oder Programmierer – TYPO3 erfordert viel mehr Lernbereitschaft und Einarbeitungszeit als vergleichbare Systeme.
    Anders sieht es beim kleinen Bruder von TYPO3: Neos aus. Dieses CMS besticht geradezu durch seine Nutzerfreundlichkeit. Dadurch, dass Neos aber erst 2011 veröffentlicht wurde und erst 2015 mehr oder minder aus dem Schatten von TYPO3 trat, ist die Nutzergemeinde und damit die Zahl der Erweiterungen noch relativ klein.
    Bekannte Nutzer von TYPO3 sind unter anderen: Penny, Airbus, Lufthansa, Sixt und Leica.
  5. DNN – Dot Net Nuke
    Zu DNN liegen uns noch keine persönlichen Erfahrungen vor, doch im englischsprachigen Raum hat es seit seiner Veröffentlichung Ende 2002 schnell an Anwendern gewonnen. In den letzten Jahren ist der Trend allerdings rückläufig und DNN verliert immer mehr Kunden an TYPO3 und Concrete5. Das CMS hat einen Marktanteil von ca. noch einem Prozent. Im Gegensatz zu allen anderen vorgestellten Softwareplattformen baut DNN nicht auf PHP auf, sondern nutzt (wie der Name schon verrät) das .net Framework von Microsoft. Das System setzt damit auf eine Nische. In Deutschland ist DNN fast gar nicht verbreitet. Geeignet ist das DNN hauptsächlich für größere Unternehmen, welche bestenfalls eine eigene IT-Abteilung und eine bestehende IIS Infrastruktur besitzen .
  6. Contao
    Contao bezeichnet sich selbst als „Barrierefreies Open Source Content Management System“ und befindet sich seit 2006 in der Entwicklung. Barrierefreie Websites lassen sich natürlich mit jedem CMS erstellen. Früher als TYPOlight bekannt, erinnert die seitenbasierte Inhaltserstellung und Bedienung ein wenig an TYPO3. Was macht Contao also so besonders, dass es trotz des Anteils von weniger als einem Prozent am globalen Markt hier noch erwähnt wird? Contao ist in Deutschland relativ weit verbreitet. Contao hat es dank der kleinen aber aktiven Community geschafft sich hierzulande durchzusetzen und ist immer häufiger bei kleinen Firmen und im Bereich Microsites im Einsatz.

Wie sieht also das Fazit aus?

In den meisten Fällen, insbesondere für kleine bis mittelständige Unternehmen, ist die Entscheidung für ein weit verbreitetes CMS wie WordPress, Joomla oder Drupal die richtige Wahl. Für den Fall, dass Probleme auftreten finden sich viele Lehrvideos und Bücher. Auch gibt es hierzulande etliche Agenturen die sich mit diesen Systemen beschäftigen. Man sollte sich dabei für das System entscheiden, mit dem man am besten zurecht kommt. Auf den Seiten der Entwickler finden sich Demos, in denen die Funktionsweise und Bedienung getestet werden kann.
Sind komplexe Websites gefragt, eignet sich, Lernwille vorausgesetzt, auch TYPO3.

Avatare für Randomname.de

In diesem Post möchte ich erklären, wie ich an die Nutzerbilder für randomname gelangt bin.

Eher zufällig bin ich auf uifaces gestoßen und fand das Projekt sehr interessant. Ich wollte die Bilder gerne für mein Projekt nutzen. Da die Nutzer eingewilligt haben, ihre Profilbilder in Web-Applikationen veröffentlichen zu lassen, sollte das auch rechtlich einwandfrei sein. Nach einer kurzen Analyse mit den Chrome Developer Tools ist mir eine Regelmäßigkeit beim Nachladen der Avatare aufgefallen: die URLs sind nach folgendem Schema aufgebaut: http://uifaces.com/faces/authorized/*SEITE*. Dabei wird eine HTML-Seite angefordert, aus der man die Bilder nur extrahieren muss. Dazu reichen folgende 4 Zeilen PHP-Script:

Ich wusste nicht, wie viele Requests tatsächlich verarbeitet werden würden, also habe ich die Bilder URLs erst einmal in Textdateien geschrieben, da ich davon ausgehen musste, dass die Funktion irgendwann abbricht. Das ist nicht passiert, also wäre es auch möglich gewesen die Bilder direkt zu laden. Die file_get_contents und file_put_contents Schritte können also getrost übersprungen werden, wenn man direkt einen Array nutzt.

Hinweis: Ggfs. ist der Pfad zum speichern der Daten zu ändern. Wird das Ganze nicht per CLI ausgeführt, ist es möglich, dass das Script abbricht, da die max_execution_time von PHP sehr wahrscheinlich überschritten wird.

download all the internet

Hat alles funktioniert, sollten sich nun alle Bilder im Ordner /tmp/images/ befinden.

Wer sich die Arbeit sparen möchte: hier gibt es alle 8419 Bilder gepackt, (Stand 02.06.2016).

Alternative zur Parameterübergabe in PHP

Man sieht es leider sehr oft und nicht nur in PHP: Klassen und Funktionen mit meterlangen Parameterlisten. Nicht nur, dass das total unübersichtlich ist, es ist auch ggfs. problematisch bei der Vererbung, bei Funktionsaufrufen, etc.

Hier ein Beispiel:

Auch wenn es wahrscheinlich den Meisten wohl offensichtlich erscheint: Hier ist mein Vorschlag und ein Beispiel für eine übersichtliche Parameterübergabe mit Default-Werten per Array:

Vorteile dieser Art Parameterübergabe: In einem assoziativen Array ist die Reihenfolge der Parameter egal. Es kann also nicht vorkommen, dass „bool“ und „really“ vertauscht werden. Der Code ist besser strukturiert und lesbar und es funktioniert auch wunderbar mit mehrfacher Vererbung.
Weiteres Plus: Möchte man nur „bool“ auf true setzen, kann man den Rest einfach weglassen (siehe Beispiel)

Nachteile: Mehr Schreibarbeit, mehr Sonderzeichen, array_merge „frisst“ ein wenig Performance (ist aber zu vernachlässigen)

Kostenlose Bilder und Vektoren für jede Website

In den letzten Jahren sind dutzende Plattformen für Stock-Images und Vektoren aus dem Boden geschossen, die unheimlich gute Grafiken und Fotos anbieten. Während die meisten Portale kostenpflichtig sind, gibt es aber immer mehr ernstzunehmende, kostenlose Alternativen. Ich möchte an dieser Stelle einige Plattformen für kostenlose und lizenzfreie Bilder vorstellen.

Portale für hochqualitative Stock-Photos

  1. flickr:
    Oft unterschätzt und den meisten nicht bekannt: Einfach über die Filter nach der Suche „Alle Creative Commons“ auswählen und schon findet man für fast jedes Thema viele gute Fotos. Obwohl auch immer wieder einige unbrauchbare Fotos dabei sind, lassen sich hin und wieder „echte Schätze“ finden. Die meisten Bilder stehen unter Creative Commons by Attribution Lizenz, eine Nennung des Urhebers ist also an geeigneter Stelle nötig, beispielsweise im Impressum.
  2. pexels
    Bei pexels gibt es sehr viele äußerst hochqualitative Fotos. Laut deren eigenen Angaben werden monatlich 1500 Fotos hinzugefügt. Alle Bilder stehen unter CC0-Lizenz.
  3. Visualhunt
    Visualhunt bietet Zugriff auf insgesamt über 354.191.553 (ja, 354 MILLIONEN) Bilder unter Creative-Commons Lizenz (teilweise auch unter CC0). Dabei werden viele verschiedene Quellen durchsucht. Bei vielen Bildern ist jedoch eine Namensnennung an geeigneter Stelle notwendig.
  4. pixabay
    Alle der über 670.000 (Stand 04.07.2016) 830.000 (Stand 21.12.2016) auf pixabay angebotenen Bilder stehen unter CC0 Lizenz.
    Pixabay ist ein deutsches Unternehmen und versteht auch Suchbegriffe in deutscher Sprache.
  5. freepik
    Bei Freepik gibt es viele kostenlose und eine riesige Anzahl guter Vektorgrafiken, PSD-Dateien, Icons und Stock-Photos. Einziger Haken: werden die Dateien nicht über einen Premium-Account (ca. 10 USD pro Monat), ist eine Namensnennung und Verlinkung – beispielsweise im Impressum – notwendig.
  6. findA.Photo
    FindA.Photo durchsucht viele Quellen (darunter z.B. Unsplash, Picography und Life of Pix). Alle Fotos stehen unter CC0 Lizenz.
  7. Stockvault
    Stockvault hat ein Archiv von derzeit knapp 100.000 Fotos. Die Bilder dürfen nur für nicht kommerzielle Projekte genutzt werden.