18. September 2014

Mehr Sicherheit Nachträglich das Datenbank Präfix ändern

,    22 Kommentare

Ein Beitrag von Hans Jung

Während der Installation von WordPress hattet ihr die Möglichkeit das Datenbank-Präfix zu wählen. Standardmäßig ist dieses Präfix auf „wp_“ gesetzt und zu wenige Seitenbetreiber wählen einen anderen Wert – weshalb das ein Sicherheitsrisiko darstellen kann.

Change DB Prefix Plugin

Was ist das Datenbank Tabellen Präfix?

Ähnlich wie in einer Arbeitsmappe in Excel werden in eurer Datenbank die Informationen auf verschiedenen Tabellenblättern, bei Datenbanken Tables, organisiert und gespeichert. Die Benutzerverwaltung ist zum Beispiel standardmäßig in der Tabelle wp_users gespeichert. In eurem Verwaltungstool für die Datenbank sieht das in etwa so aus:

Die Verwaltungsoberfläche von phpMyAdmin (Bildquelle: http://digwp.com)

Darum solltet ihr nicht das wp_ Präfix verwenden

Angenommen es gibt eine Schwachstelle in einem Plugin oder WordPress selber, die das Ausführen von Code in eurer Datenbank erlaubt. Mittels SQL-Injection könnte so von Dritten Änderungen in eurer Datenbank vorgenommen werden. Das kann zum Beispiel die automatische Weiterleitung aller eurer Besucher auf eine andere URL sein, die über die wp_options Tabelle gesetzt wird.

Eine Lücke in einem Plugin wird man versuchen auf so vielen Seiten wie möglich auszunutzen. Da immer noch sehr viele Seiten das Datenbank Präfix wp_ nutzen, wird das die bevorzugte Angriffsstelle sein. Ein individuelles Datenbank Präfix schützt euch nicht vor der eigentlichen Schwachstelle, die das ausführen von Code in eurer Datenbank erlaubt. Allerdings laufen automatisierte Angriffe vorerst ins Leere, da ihr keine Tabelle mit dem Namen wp_options verwendet.

So ändert ihr nachträglich das wp_ Datenbank Präfix auf einen individuellen Wert

Es gibt den zeitintensiven manuellen Weg und die Abkürzung über ein Plugin um das Präfix eurer Datenbank zu ändern. In beiden Fällen solltet ihr vor jeglichen Änderungen ein Backup eurer Seite machen.

Manuell das Datenbank Präfix ändern

  1. Öffnet die wp-config.php und sucht die Zeile mit dem Eintrag
    $table_prefix = 'wp_';

    Hier ändert ihr den Wert wp_ in etwas Neues (Buchstaben und Zahlen werden akzeptiert)

    $table_prefix = 'neu1_';

    Speichert die Änderungen

  2. Ändert die Namen der Tabellen in eurer Datenbank
    1. Öffnet das Verwaltungstool (z.B. phpMyAdmin), wählt eure Datenbank aus und klickt auf „SQL“
    2. Mit diesem Code macht ihr die Umbenennung für das Präfix „neu1_“
      RENAME table `wp_commentmeta` TO `neu1_commentmeta`;
      RENAME table `wp_comments` TO `neu1_comments`;
      RENAME table `wp_links` TO `neu1_links`;
      RENAME table `wp_options` TO `neu1_options`;
      RENAME table `wp_postmeta` TO `neu1_postmeta`;
      RENAME table `wp_posts` TO `neu1_posts`;
      RENAME table `wp_terms` TO `neu1_terms`;
      RENAME table `wp_term_relationships` TO `neu1_term_relationships`;
      RENAME table `wp_term_taxonomy` TO `neu1_term_taxonomy`;
      RENAME table `wp_usermeta` TO `neu1_usermeta`;
      RENAME table `wp_users` TO `neu1_users`;

In diese Liste solltet ihr auch alle weiteren Tabellen eintragen, die von euren Plugins erstellt wurden.

  1. Aktualisiert die User Meta Felder im selben Fenster wie in Schritt 2
    UPDATE `neu1_usermeta` SET `meta_key` = REPLACE( `meta_key`, 'wp_', 'neu1_' )
  2. Aktualisiert die Options-Tabelle wieder im selben Fenster
    UPDATE `neu1_options` SET `option_name` = 'neu1_user_roles' WHERE `option_name` = 'wp_user_roles'
  3. Fertig.

Mit einem Plugin das Datenbank Präfix wp_ ändern

Change DB Prefix

Das Backend von Change DB Prefix is zweckmäßig.

Das Plugin Change DB Prefix erledigt die zuvor beschriebenen manuellen Schritte innerhalb von Sekunden für euch. Dazu installiert ihr das Plugin in WordPress und ändert den Datenbank-Präfix in dem dafür vorgesehenen Feld. Nach dem Klick auf „Save Changes“ werden die Änderungen durchgeführt.

Eure Konfiguration interessiert uns:

Verwendet ihr noch das Datenbank Präfix wp_?

    Fazit: Keine WordPress Seite sollte mehr das Standard Datenbank Präfix wp_ nutzen. Mit dem Plugin Change DB Prefix könnt ihr schnell und bequem das aktuelle Präfix ändern und eure Seite etwas besser gegen SQL-Injection schützen.

    Update: Ihr solltet das Plugin nicht einsetzen, wenn ihr in einer Datenbank mehrere WordPress-Installationen betreibt. Danke @Thomas für den Hinweis.

    Hans Jung

    Hans Jung

    Hans ist Datenschutzbeauftragter und bekennender WordPress-Fan – und versucht beides unter einen Hut zu bekommen.
    Hans Jung

    Du willst up-to-date bleiben?

    Trage dich jetzt in unseren kostenlosen Newsletter ein, um stets die aktuellsten Neuigkeiten rund um Wordpress zu erhalten.

    Wir geben deine Daten nicht weiter! Wir hassen Spam genauso wie du!

    22 Kommentare

    Reaktionen auf diesen Beitrag

    • Hallo,
      das Plugin könnte man nach der Änderung des Präfix wieder löschen, oder denke ich da falsch. Werden die Daten in der Datenbank überschrieben?

      • Hans Jung

        Hallo Egon,

        ja, das Plugin kann man nach der Änderung wieder löschen. In der Datenbank werden nur die entsprechenden Werte und Referenzen zu den Tabellen mit wp_ überschrieben, die übrigen Inhalte bleiben unverändert.

    • gamesart

      Super, vielen lieben Dank für die tolle Anleitung!

      Eine Frage, gibt es auch eine Möglichkeit die typische WP-LOGIN mit einem Plugin Dauerhaft umzubenennen? Ich arbeite da im Moment mit einer zweiten Datei und lösche nach jedem WordPress Update die Original WP-Login, wenn ich das nicht mache habe ich täglich bis zu 100 Login-Hack-Versuche…

    • gamesart

      Jetzt schaue ich mir weiter Eure Seite an und stelle fest – es gibt ja schon ein Artikel zu meiner Frage 😀

    • Wann bekommen die WordPress-Entwickler denn endlich mal einen zufälligen Tabellenpräfix wie bei Joomla hin?………

      • Mike

        Den Präfix kann man doch einfach bei der Installation frei definieren.
        Verstehe also nicht warum man das nicht macht, und sich später dann eine gesonderte Funktion wünscht…

    • Ich frage mich, ob es wirklich so tödlich sein kann, wenn man wp- beibehält. Ich weiss nicht mehr genau wie und warum. Bei mir steht in der wp-config inetwa folgendes (natürlich habe ich das abgeändert): $table_prefix = ‚wp_12345_’*; lso hiner dem wp_ ein 8-stelliges Passwort. Ist das nicht genug Sicherheit? Ich weiss auch nicht mehr, ob man hier Sonderzeichen verwenden darf. Aber ein 8-stelliges Passwort will erst mal geknackt sein. Was sagt Ihr?

      *von pressengers geändert 😉

    • Blöde Geschichte halt, wenn man das Plugin in einer DB nutzt, in der 2 WP-Installationen (eh mit unterschiedlichen, aber ähnlichen Präfixen) ihre Daten haben.

      Mir hats damit die 2. WP Installation gerade zerschossen. Zum Glück eh nur eine Testinstallation.

    • Wie DaDirnbocher hatte ich meine WP Testintallation beim ändern des Präfix zerschossen.
      Mit WP Migrate DB konnte ich aber recht schnell einen neuen Clone von meinem Blog erstellen.
      Sehr nützliches Plugin wenn ein WP Umzug bevorsteht, man den Präfix nachträglich ändern möchte oder wenn mehrere WP Installationen auf einer DB laufen. Alle alten Pfade werden mit den neuen Pfaden ersetzt.

      Mit einem Editor kann man anschließend über „suchen und ersetzten“ den neuen Präfix angeben und die neue DB über phpmyadmin importieren. Zum Schluß noch wie im Beitrag beschrieben die zwei Update-SQL Befehle ausführen. (die config nicht vergessen)

    • Vielen Dank für diese Anleitung. Hat alles auf Anhieb funktioniert. 🙂

    • Alex

      Servus,

      super Anleitung.
      Was ist mit dem Präfixen von PlugIns? Einige haben ja selber DB Tabellen.
      Diese auch ändern?

      • Julian Dziki

        Hallo Alex,

        Ich meine mich dunkel zu erinnern, dass die Präfixen von Plugins sich immer an die Vorgabe von WP halten, also das Präfix der WP-Installation übernehmen.

    • Danke! Habe viel gesucht – und hier endlich die Lösung gefunden, wie ich nun wieder nach der Änderung des Präfix in mein Backend komme.

    Schreibe einen Kommentar

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