TLDR; Es ist nicht möglich, WordPress zu verschleiern, indem Sie nur Anweisungen in Ihrer .htaccess-Datei verwenden.
Jetzt kommt eine Geschichte von Leid und Entsetzen. Unser Freund fbh hatte Recht mit der Schwierigkeit, WordPress zu verstecken, nicht für Feiglinge mit gelbem Bauch. Arr! Hier sind die Details dieses (falschen) Abenteuers. Ihr seid gewarnt!
Motivation
Ich bin einer von denen, die Dinge perfekt mögen. Ich werde Zeit damit verschwenden, etwas zu überarbeiten, um der „richtige Weg“ zu sein. Eines der Dinge, die mir am Standard-WordPress-Setup nicht gefallen haben, war, dass ein Benutzer http://ex.com/wp-settings.php eingeben konnte und dann all dieser PHP-Jargon überall herumspuckte. Ich war schließlich in der Lage, Fehler über PHP auszuschalten, aber das führte zu einem größeren Wunsch, nur Dinge zu haben, die seitdem als lokalisierbare Ressourcen vom Server gemacht wurden ... und dass alles andere auf unserer benutzerdefinierten Suchseite 404 / 3'-bestätigt würde. Danach kam mir die Idee, dass ich das zugrunde liegende Framework (dh WP) vollständig ausblenden möchte ... sowieso ... wenn Sie WP ausblenden möchten, ist dies möglich. Aber es ist wirklich schwer.
Schritte in dein Verderben
Ändern Sie Ihre PHP-INI-Einstellungen entsprechend. (dh Anzeigefehler deaktivieren ) Sie denken möglicherweise, dass dies nicht erforderlich ist, da bei Verwendung von .htaccess zum Umleiten von Dingen keine Fehler angezeigt werden, da sie nicht auf die fehlerverursachenden Ressourcen zugreifen können (ich sehe Sie an wp-settings.php
). Auf den angezeigten Seiten können jedoch Fehler auftreten, sodass Sie sie auf jeden Fall deaktivieren möchten. Nur weil WP_*
Richtlinien festgelegt sind, bedeutet dies nicht unbedingt, dass die Dinge so funktionieren, wie Sie es sich vorstellen. Ich habe festgestellt, dass ich auf meinem Server die display_errors auf false FIRST setzen musste, da WP_DISPLAY_ERRORS davon ausgegangen ist, dass die Standardeinstellung false ist.
Das Steuern der PHP-INI-Einstellungen kann so einfach sein wie das Einfügen einer Direktive in Ihre .htaccess-Datei. Oder in meinem Fall so kompliziert wie das Erstellen eines CGI-Handlers und das anschließende Ablegen einer php.ini-Datei. YMMV abhängig von Ihrer Einrichtung.
Entfernen Sie jeglichen Zugriff auf Dateien / Verzeichnisse mit wp-
Präfix. Die Idee ist, dass es bei Ihrer WP-Bereitstellung um Ihren Inhalt geht, nicht um WP (es sei denn, es ist speziell auf WP ausgerichtet). Es macht keinen Sinn, dass die Leute sehen wollen, was http; // ex.com/wp-cron.php hat ... es sei denn, sie haben nichts Gutes vor. Ich habe dies folgendermaßen erreicht:
# If the resource requested is a `wp-*` file or directory, poop to a 403.
RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule .* - [F,L]
Erfahren Sie, wie Sie mordor einfach durchlaufen. Wenn Sie den gesamten Zugriff auf entfernen, erhalten wp-*
Sie keinen Zugriff mehr auf den administrativen Teil von WP. Das ist wirklich scheiße. Zusätzlich zu diesem Wermutstropfen haben Sie gerade festgestellt, dass Sie nicht wissen, was RewriteCond %{ENV:REDIRECT_STATUS} ^$
wirklich funktioniert. Nun, ich habe versucht, mir eine "geheime" Hintertür zur WP-Administrationsseite zu geben. Ich habe diesen Code verwendet:
# If the resource requested is 'mordor' (with or without an ending
# slash) do a URL rewrite to `wp-login.php`.
RewriteCond %{REQUEST_URI} mordor/?$ [NC]
RewriteRule mordor/?$ /wp-login.php [NC,L]
Die URL: http://ex.com/mordor sollte uns also zur Anmeldeseite bringen. Der Grund, warum wir die REDIRECT
Zeile im obigen Schritt hatten, ist, dass wp-*
wir nicht möchten, dass die erste Umschreiberegel sie erhält, da diese URL in eine URL umgeschrieben wird . Da es intern umgeleitet wird, REDIRECT_STATUS
wird es richtig eingestellt und es wird uns nicht auf 403/4 Land drängen.
Entfernen von wp-Inhalten Wordpress.stackexchange bietet einen großartigen Artikel zum Entfernen von wp-Inhalten. Sie müssen einige WP-Konstanten neu definieren und das funktioniert so ziemlich. Sie müssen auch alle Zugriffe von wp-content
"Was auch immer-Inhalt" umleiten. Dies ist wahrscheinlich kein Problem, wenn es sich um eine saubere Bereitstellung handelt. Wenn Sie eine bereits vorhandene Bereitstellung ändern, müssen Sie einige zusätzliche Aufgaben ausführen.
URLs in wp-content umschreiben optional RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L]
. Dies geht in Ihre .htaccess-Datei. Wenn Ihr Benutzer versucht, über eine wp-content
URL auf alte Inhalte zuzugreifen , werden diese hier umgeleitet.
Grep und ersetzen Sie alle Verweise auf wp-Inhalt in Ihrer DB optional . Sie haben noch wp-content
in Ihrer Datenbank. Wenn du WP frei haben willst, musst du das Zeug loswerden. Ich habe meine Datenbank exportiert / mysql ausgegeben, eine Suche durchgeführt und die wp-content
Zeichenfolge durch die neue ersetzt. Sie könnten sagen ... warum muss ich das tun, wenn Apache meine URLs neu schreibt? Das Problem ist, dass der Quellcode diese Referenzen enthält. Wenn Sie also wirklich daran interessiert sind, WordPress zu verschleiern, müssen Sie dies tun. Hinweis: Zu diesem Zeitpunkt hätte ich einfach aufhören und die Realität akzeptieren sollen, dass dies nicht funktionieren würde. Aber ich wollte, dass Mr. T mich bemitleidet.
Ersetzen Sie alle Verweise auf wp-includes
und wp-admin
in der Quelle. Ein Großteil der WordPress-Funktionalität hängt von diesen beiden Verzeichnissen ab: wp-includes
und wp-admin
. Dies bedeutet, dass diese Verzeichnisnamen im Quellcode fest codiert sind. Dies bedeutet, dass Sie neue Verzeichnisse erstellen müssen (da PHP das zugrunde liegende Betriebssystem-Dateisystem verwendet, nicht Apache), um auf diese zuzugreifen, und diese dann in das ausgegebene HTML schreiben müssen. Das ist einfach viel zu viel Mühe. Ich gab schnell auf und ging ins Badezimmer, um einen Kot zu machen.
Lektion
Klar, ich hätte einfach http://codex.wordpress.org/Hardening_WordPress lesen und diese Schritte befolgen können. Aber ich wollte die perfekte Seite. Jetzt will ich nur noch all diese Stunden zurück. Das Größte, was mich daran hinderte anzuhalten, war, dass ich nirgendwo im Internet gelesen habe, dass dies eine Menge Arbeit war und fast unmöglich zu tun war. Stattdessen las ich von Leuten, die versuchten, es zu tun, ohne zu wissen, ob sie erfolgreich waren oder nicht. Also, an mein früheres Ich, an das ich dies über Apples Time Machine senden werde, versuchen Sie bitte nicht, WordPress zu verschleiern. Es lohnt sich nicht.