Soll das WordPress-Blog abgesichert werden, so wird häufig empfohlen die Basic-Authentisierung für den Admin-Bereich zu aktivieren. Das lässt sich per .htaccess auf einem Apache Web-Server leicht realisieren. Auf diese Weise kann ein Angreifer nicht mehr direkt auf Dateien des Backends zugreifen, so dass die Angriffsfläche reduziert wird. Allerdings werden die Login-Daten bei der Basic-Authentisierung lediglich Base64 kodiert übertragen. Werden die Daten also mitgelesen, lassen sich die Daten leicht wiederherstellen. Daher sollte man zusätzlich die Administration per SSL durchführen (siehe auch Artikel WordPress SSL Admin).
Wird der Zugriff per SSL-Proxy erzwungen und die Basic-Authentisierung aktiviert, gibt es allerdings ein Problem: beim Zugriff ohne SSL-Proxy erfolgt die Weiterleitung erst, wenn die Basic-Authentisierung durchgeführt wurde. Anschließend erfolgt die Weiterleitung auf SSL und die Basic-Authentisierung muss erneut durchgeführt werden. Soll die Basic-Authentisierung nur beim Seitenaufruf per SSL-Proxy durchgeführt werden muss die .htaccess-Datei im Verzeichnis /wp-admin wie folgt abgeändert werden:
# Wenn kein SSL-Proxy, setze Varible unenc_access ################################################# SetEnvIf X-Forwarded-Host ^$ unenc_access # Einstellungen für Basic Auth ############################## AuthUserFile /path/to/.passwordfile AuthGroupFile /path/to/.groupfile AuthName "Backend" AuthType Basic Require valid-user Order deny,allow Deny from all # Wenn unenc_access gesetzt, erlaube UnAuth-Access für Weiterleitung #################################################################### Allow from env=unenc_access Satisfy any
Soll die xmlrpc.php und die wp-login.php auch abgesichert werden, so ist zusätzlich folgender Code in die .htaccess des Root-Verzeichnisses der WordPress-Installation einzutragen:
<FilesMatch "(xmlrpc|wp-login)(.*)"> SetEnvIf X-Forwarded-Host ^$ unenc_access AuthUserFile /path/to/.passwordfile AuthGroupFile /path/to/.groupfile AuthName "Backend" AuthType Basic Require valid-user Order deny,allow Deny from all Allow from env=unenc_access Satisfy any </FilesMatch>