Was dies nicht verhindert: Brute Force
Alles, was es tut, ist automatische Brute-Force-Angriffe zu verhindern?
Nein, dies verhindert keine Brute-Force-Angriffe.
Bei einem Brute-Force-Angriff hat ein Angreifer die Kontrolle über alle Parameter der HTTP-Anforderung. Dies schließt den Referer ein. Da der Angreifer beliebige Verweise senden kann, werden Brute-Force-Angriffe nicht verhindert. (Fast) alle Brute-Force-Tools ermöglichen die Einstellung eines Referers, und die Einstellung der Site selbst als Referer ist ziemlich Standard.
Mechanismen, die vor roher Gewalt schützen, sind das Verbot oder Drosseln auf IP- oder Benutzername-Basis sowie Captchas.
Was dies verhindern könnte: CSRF
Dieser Code wurde möglicherweise eingerückt, um allen POST-Anforderungen im Administratorbereich eine Verweisprüfung hinzuzufügen. Wenn der Referer nicht gültig ist, wird die Anfrage abgelehnt.
Bei einem CSRF-Angriff zwingt ein Angreifer ein Opfer, eine POST-Anforderung zum Ändern des Status auszuführen. Dies kann beispielsweise durch das Posten von HTML- und Javascript-Code auf attacker.com geschehen, der dann automatisch eine Anfrage an opfer.com sendet, sobald ein authentifiziertes Opfer die Website besucht.
Referer Checks sind ein Mechanismus zum Schutz vor CSRF. Da nur Opfer.com als gültiger Verweis akzeptiert wird, kann ein Angreifer das Opfer nicht zwingen, eine Anfrage von seiner eigenen Domain zu senden.
Natürlich hat WordPress einen eigenen CSRF-Schutz (über Anti-CSRF-Nonces). Möglicherweise werden jedoch nicht alle Fälle erfasst, und die Sicherheit von Plugins hängt stark vom Plugin-Entwickler ab.
Eine zusätzliche Referer-Prüfung kann dazu beitragen, zu verhindern, dass CSRF-Schwachstellen im WP-Kern und insbesondere in Plugins ausgenutzt werden können.
Wenn dies beabsichtigt war, ist der Code natürlich fehlerhaft. Das $
In RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
verhindert die Prüfung für die meisten Anfragen.
Die Prüfung kann auch leicht umgangen werden. Die folgenden Referenten würden akzeptiert:
Referer: http://example.com.org
Referer: http://not-example.com
Referer: http://notexample.com
Referer: http://attacker.com/example.com
[...]
Um die Sicherheit der Site zu erhöhen, müssten diese beiden Probleme zuerst behoben werden. Der Code könnte auch weiter verbessert werden, indem er nicht auf POST-Anforderungen beschränkt ist (in schlecht geschriebenen Anwendungen können GET-Anforderungen auch den Serverstatus ändern oder POST-Anforderungen können in GET-Anforderungen umgewandelt werden). Da die Prüfung nur für Administratoren gilt, sollte dies die Benutzerfreundlichkeit nicht einschränken.