Warum weniger manchmal mehr ist (aber ein bisschen Vorsicht trotzdem nicht schadet)
Sicherheits-Plugins für WordPress gibt es wie Sand am Meer – manche machen einen super Job, andere blähen die Seite unnötig auf und bremsen sie aus. Und wer einmal versehentlich die „Security Suite Deluxe Mega Pro“-Einstellungen falsch angeklickt hat, weiß: Ein Plugin kann auch mal mehr Chaos als Schutz bringen.
Aber keine Sorge: Du brauchst nicht zwingend ein Plugin, um Deine WordPress-Seite sicherer zu machen. Mit ein paar Zeilen Code in zwei-drei wichtigen Dateien kannst Du viele Sicherheitslücken schließen. Ganz ohne Plugin-Ballast.
Aber: Plugins haben trotzdem ihre Daseinsberechtigung, vor allem für Einsteiger oder wenn man einfach schnell was braucht. Ich möchte hier nur mal zeigen, wie’s auch ohne geht.
Index
1. Der WordPress Grundschutz – das kleine Sicherheits-Einmaleins
2. Warum überhaupt der Aufwand?
3. Bevor’s losgeht: Backup, bitte!
4. HTTPS erzwingen
5. Verzeichnisse verbieten
6. Fehlermeldungen abschalten
7. wp-config.php schützen
8. xmlprc.php deaktivieren
9. Hotlinking verhindern
10. PHP im Upload-Ordner verbieten
11. WordPress-Version verbergen
12. 2-Faktor-Authentifizierung (2FA) einrichten
13. Uns sonst so? Security Headers!
14. Fazit
15. Bonus: alle .htaccess-Einträge zum Kopieren
1. Der WordPress Grundschutz – das kleine Sicherheits-Einmaleins
Bevor wir zur „Plugin-Diät“ kommen, erstmal das Fundament:
- Installation: Es fängt bereits mit der Installation von WordPress an. Ändere den Standard-Admin, und wähle ein anderes Datenbank-Präfix. Statt wp_ z.B. qs12_. Ausserdem solltest Du die vorinstallierten Themes und Plugins löschen, wenn Du diese nicht brauchst.
- Guter Hosting Provider: Wähle einen Anbieter, der auf Sicherheit achtet: Server-Firewalls, aktuelle PHP-Versionen, automatische Malware-Scans. Wir selbst bieten übrigens genau das an 😉
➤ Warum wichtig? Ein unsicherer Server ist wie ein Haus mit offener Hintertür – egal, wie viele Schlösser Du an der Haustür hast. - Regelmäßige Updates: Halte WordPress, Themes und Plugins aktuell. Immer.
➤ Warum wichtig? Updates schließen bekannte Sicherheitslücken. Wer sie ignoriert, lädt Hacker regelrecht ein. - Starke Passwörter: Kein „admin123“ oder so. Niemals.
➤ Warum wichtig? Schwache Passwörter sind wie billige Fahrradschlösser – mit etwas Geduld knackt sie jeder. - Backups machen: Automatisch, regelmäßig, extern gespeichert.
➤ Warum wichtig? Wenn doch mal was schiefgeht, kannst Du Deine Seite in Minuten wiederherstellen. - SSL-Zertifikat: Kostenlos über Let’s Encrypt – aber ein echtes Muss.
➤ Warum wichtig? Es verschlüsselt die Verbindung zwischen Browser und Server. Ohne HTTPS kann unterwegs jemand z.B. das Passwort, das Du eingibts, mitlesen.
2. Warum überhaupt der Aufwand?
Weil WordPress das beliebteste CMS der Welt ist – und das macht es zum Lieblingsziel von Bots, Spammern und anderen zwielichtigen Gestalten. Laut aktueller Studien laufen über 43% aller Websites auf WordPress-Basis. Je größer die Zielscheibe, desto mehr Pfeile fliegen.
➤ Typische Ziele sind:
- Login-Seiten (Brute Force)
- Veraltete Plugins (bekannte Lücken)
- Offen zugängliche Systemdateien
- Verzeichnisse ohne Schutz
- Nicht gesicherte Formulare
Mit ein paar Handgriffen kannst Du viele dieser Ziele entschärfen – und genau das machen wir jetzt!
3. Bevor’s losgeht: Backup, bitte!
Bevor Du wild drauflostippst:
- Die originale .htaccess kopieren und umbenennen, z. B. in .htaccess_backup. Falls was schiefgeht, kannst Du sie einfach zurückkopieren.
- Änderungen an der functions.php bitte nur im Child-Theme vornehmen, sonst sind sie beim nächsten Theme-Update futsch. (Wie man ein Child-Theme, z.B. für DIVI erstellt, erkläre ich in diesem Beitrag.)
⚠️ Vorsicht: Schreibfehler in diesen Dateien können dazu führen, dass Deine Seite nicht mehr lädt. Also: Ruhe bewahren, doppelt prüfen – und notfalls Hilfe holen.
4. HTTPS erzwingen
Voraussetzung hierfür ist, dass Du das unter Pt. 1 erwähnte SSL-Zertifikat hast. Ohne Zertifikat kein HTTPS. Manche Hosting Provider bieten einen einfachen Schalter an, um die Seite auf https:// zu zwingen. Ist das nicht der Fall, kannst Du diese paar Zeilen in die .htaccess-Datei schreiben:
.htaccess (Stammverzeichnis)
# https erzwingen
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
➤ Was passiert hier?
Jeder Besuch Deiner Seite wird automatisch auf die verschlüsselte Version (https://) weitergeleitet.
➤ Warum ist das wichtig?
Ohne HTTPS werden Daten wie Passwörter oder Formulare unverschlüsselt übertragen – und könnten theoretisch abgefangen werden. Besonders bei Login-Seiten oder Kontaktformularen sollte das vermieden werden.
5. Verzeichnisse verbieten
In der Browserzeile kann man einfach den Pfad eingeben, um die Inhalte eines Ordners anzeigen zu lassen. Viele Ordner sind von Haus aus bereits geschützt, aber z.B. das Upload-Verzeichnis und etliche weitere nicht. Es macht also Sinn, dieses „Inhaltsverzeichnis“ zu verbergen.
.htaccess (Stammverzeichnis)
# directory listing verbieten
Options -Indexes
➤ Was ist Directory Listing?
Wenn jemand z. B. deine-seite.de/wp-content/uploads/ aufruft, sieht er alle hochgeladenen Dateien in einer Liste – es sei denn, Du verbietest das.
➤ Warum ist das gefährlich?
Hacker könnten über Dateinamen Schwachstellen finden oder sogar Schadcode einschleusen, wenn keine Schutzmaßnahmen greifen.
6. Fehlermeldungen abschalten
Ich empfehle, die Ausgabe von Fehlermeldungen (wenn die Entwicklung abgeschlossen ist) global auf dem Server zu deaktivieren. Leider geben nicht alle Hosting Provider Zugang zur entsprechenden php.ini-Datei. Dann bietet er meist einen Schalter an (in den PHP-Optionen) für solche Funktionen. Einfach den Haken entfernen:

Wenn das keine Option ist, lassen sich Fehlermeldungen auch direkt in der .htaccess-Datei ausschalten (mit „On“ kann man diese wieder einschalten):
.htaccess (Stammverzeichnis)
# error reporting ausschalten
php_flag display_errors Off
➤ Was macht das?
Es deaktiviert die Anzeige von Fehlermeldungen auf Deiner Website.
➤ Warum wichtig?
Fehlermeldungen zeigen oft sensible Infos: Serverpfade, Plugin-Namen, Versionen – alles Dinge, die ein Angreifer gezielt ausnutzen kann.
7. wp-config.php schützen
Die wp-config.php ist DAS Herzstück deiner WordPress-Installation. Sie enthält viele sensible Informationen, darunter z.B. die Zugangsdaten zu deiner Datenbank. Diese müssen wir unbedingt schützen:
.htaccess (Stammverzeichnis)
# wp-config.php schützen
<files wp-config.php>
order allow,deny
deny from all
</files>
➤ Was ist die wp-config.php?
Die Datei enthält Deine Datenbank-Zugangsdaten, Sicherheitsschlüssel und andere kritische Einstellungen.
➤ Warum schützen?
Wenn jemand sie lesen kann, kann er Deine Seite übernehmen. Ganz einfach.
8. xmlprc.php deaktivieren
Die xmlrpc.php (XML Remote Procedure Call) wurde verwendet, um z.B. offline Blogbeiträge zu erstellen und dann auf dein WordPress hochzuladen. xmlrpc gilt heute als veraltet und unsicher, ist aber in WordPress weiterhin standardmässig aktiviert. Wenn Du xmlrpc.php also nicht brauchst, dann deaktivere es besser:
.htaccess (Stammverzeichnis)
# xmlrpc.php deaktivieren
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
➤ Wozu war xmlrpc.php gedacht?
Früher wurde sie für Apps und Remote-Zugriffe gebraucht – heute fast gar nicht mehr.
➤ Warum deaktivieren?
Angreifer nutzen diese Datei für Brute-Force-Angriffe oder DDoS-Ketten. Wenn Du sie nicht brauchst: abschalten.
9. Hotlinking verhindern
Über Hotlinking liesse sich problemlos ein eigener Blogbeitrag schreiben. Vielleicht hole ich das noch nach 😉.
Von Hotlinking spricht man, wenn eine fremde Website deine Bilder „klaut“. Und zwar nicht durch Kopieren, sondern mit einem Link auf das Bild auf deiner Website. Besucht nun jemand die fremde Website, wird dein Bild auf deiner Website angefragt und von deiner Website „ausgeliefert“. Das kostet nicht nur Bandbreite, sondern könnte dich lizenzrechtlich in die Bredouille bringen. Dann nämlich, wenn du nur für deine Domain lizenzierte Bilder verwenden darfst.
Mit den folgenden Zeilen können wir das Hotlinking unterbinden.
⚠️ Vorsicht: Hotlinking sollte im Sinne von SEO richtig gemacht werden: so lassen wir die einschlägigen Suchmaschinen zu, weil diesen ansonsten ebenfalls kein Bild oder lediglich ein Platzhalterbild ausgeliefert wird.
# Hotlinking verhindern
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?deine.domain [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bing.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg|webp)$ https://deine.domain/wp-content/uploads/[Pfad]/[Bildname.xxx] [NC,R,L]
⚠️ Bitte beachten: Achte darauf, dass Du deine.domain und den Pfad zum Platzhalterbild mit deinen Angaben ersetzen musst! Wenn du kein Platzhalterbild hast oder möchtest, kannst du die letzte Zeile löschen.
➤ Was ist Hotlinking?
Wenn jemand ein Bild von Deiner Seite auf seiner Website einbindet – aber über Deine Serverressourcen.
➤ Warum problematisch?
Das kostet Dich Ladezeit und Bandbreite, und ist möglicherweise lizenzrechtlich problematisch, wenn jemand anderes Dein schönes Bild nutzt. Nein danke.
10. PHP im Upload-Ordner verhindern
Der Upload Ordner im Verzeichnis wp-content muss beschreibbar sein. Dort drin sind die Mediendateien (Bilder, PDFs etc.), und DIVI legt dort Javascripts, CSS-Stylesheets und Fonts ab. PHP-Code hat dort drin nichts zu suchen. Also weg damit!
Dazu erstellst Du mit einem Texteditor eine leere Datei, nennst diese „.htaccess“ und legst diese im Uploads-Ordner ab.
In diese Datei schreibst Du:
.htaccess (wp-content/uploads)
<FilesMatch "\.php$">
Deny from all
</FilesMatch>
➤ Was macht das?
Verbietet die Ausführung von PHP-Dateien im Ordner wp-content/uploads.
➤ Warum wichtig?
Manche Angriffe laden gefährliche Skripte genau dort hoch – die sich dann unbemerkt ausführen. Diese einfache Regel verhindert das zuverlässig.
11. WordPress-Version verbergen
WordPress zeigt standardmäßig an mehreren Stellen die aktuelle Version an. Klingt harmlos, ist aber ein potenzielles Sicherheitsproblem: Angreifer sehen auf einen Blick, ob du eine veraltete (und womöglich angreifbare) Version benutzt. Also werden wir die WordPress-Version mit einer Zeile in der functions.php-Datei verschwinden lassen. Denk daran, ein Child-Theme zu verwenden, sonst sind beim nächsten Update deine Einträge futsch:
👉 Hier gehts zum Beitrag „Divi Child Theme erstellen“
functions.php (wp-content/themes/[theme-name])
remove_action('wp_head', 'wp_generator');
➤ Was macht das?
Verhindert, dass WordPress die eigene Versionsnummer im HTML-Code verrät.
➤ Warum wichtig?
Angreifer suchen gezielt nach Seiten mit bekannten Schwachstellen – und da hilft es ihnen, Deine genaue Version zu kennen.
12. 2-Faktor-Authentifizierung (2FA) einrichten
Zwei-Faktor-Authentifizierung bedeutet, dass man für die Anmeldung zwei Faktoren hat: 1. das, was ich weiss, i.d.R. Benutzername und Passwort, und 2. das, was ich habe, i.d.R. eine Authenticator-App, die einen einmaligen Code generiert.
Okay, hier machen wir eine Ausnahme mit Plugin – weil 2FA ohne Plugin doch ziemlich umständlich ist.
➤ Plugin-Empfehlung:
Two-Factor Plugin – schlank, zuverlässig, kostenlos.
Warum? 2FA macht den Login deutlich sicherer. Selbst wenn jemand Dein Passwort hat, kommt er nicht rein – ohne den zweiten Faktor.
13. Uns sonst so? Security Headers!
Sogenannte „Security Headers“ verhindern Clickjacking, XSS-Angriffe und andere moderne Bedrohungen.Ein echter Boost für die Sicherheit – aber ein bisschen komplexer.
14. Fazit
WordPress lässt sich schon mit Bordmitteln und ein bisschen Code deutlich sicherer machen.
Du siehst: Auch ohne Plugins kannst Du jede Menge tun, um Deine WordPress-Seite gegen Angriffe abzusichern. Und keine Angst – Du musst kein Profi sein, um das alles umzusetzen. Nur ein bisschen vorsichtig, ein bisschen neugierig – und wenn’s doch zu kompliziert wird, darfst Du mich natürlich auch 👉 gern buchen.
Ich mache das dann für Dich – ohne Hokuspokus, aber mit Sorgfalt. 😊
15. Bonus: alle .htaccess-Einträge zum Kopieren
Hier findest du alle besprochenen Einträge für die .htaccess-Datei im Stammverzeichnis in einem File. Einfach kopieren und in deine .htaccess-Datei einfügen.
⚠️ Nicht vergessen: NACH dem Einfügen und VOR dem Speichern deine Domain und deine Pfade anpassen! Und zuallererst ein Backup deiner aktuellen .htaccess-Datei machen!
.htaccess (Stammverzeichnis)
# https erzwingen
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# directory listing verbieten
Options -Indexes
# error reporting ausschalten
php_flag display_errors Off
# wp-config.php schützen
<files wp-config.php>
order allow,deny
deny from all
</files>
# xmlrpc.php deaktivieren
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
# Hotlinking verhindern
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?deine.domain [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bing.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg|webp)$ https://deine.domain/wp-content/uploads/[Pfad]/[Bildname.xxx] [NC,R,L]
Bleib sicher – und bleib dran!
0 Kommentare