Spring Boot Security: 403 Forbidden

Es gibt durchaus gute Tutorials und Examples für Spring Boot Security. Nur benutzen die alle Thymeleaf als Templating Engine. Und Thymeleaf hat eine Besonderheit: Wenn man im Form “th:action” statt “action” verwendet, dann wird automatisch ein hidden Input Field mit dem CSRF-Token injected!

Wenn man stattdessen bsplw. Velocity verwendet, und das Template 1:1 übersetzt, merkt man nicht, dass etwas fehlt m( Der Server gibt “403 Forbidden” ohne weitere Fehlermeldung zurück (Tipp zum Debuggen: Der Request wird irgendwann auf die Error-Route umgebogen, aber der Fehler (hier noch inklusive Fehlermeldung) steht im Response-Object).

Offenbar muss man den Token dann manuell dem Template übergeben (Quelle, weicht aber leicht ab):

Gegenprobe:

Update

Übrigens: Hier wird beschrieben, wie man in Thymeleaf den Token in jeden Ajax-Request bekommt. Leider funktioniert das so nicht, denn um den Platzhalter zu ersetzen, muss man th:content verwenden (Quelle indirekt), sonst wird der Platzhalter nicht ausgewertet m(

Dann: Siehe hier für das Absetzen der Requests (in jQuery oder Angular)

PHPIDS, WPIDS

php

Auf PHPIDS bin ich in der c’t 10/2009 (S. 164 ff) gestoßen. Es geht um ein PHP-Script, das, in alle öffentlich zugänglichen Scripte einer Webseite eingebunden, Einbruchsversuche erkennen soll. Diese werden dann geratet, und der Webmaster im Zweifelsfalls per Email informiert. Klingt erstmal gut, vor allem aus folgenden Gründen:

  • Neuerdings werden Email-Benachrichtigungen über neue Kommentare hier im Blog nicht mehr zugestellt. OK, sie gehen an die Absenderadresse zurück, die ebenfalls meine ist, aber eben sehr verzögert. Fehlermeldung: “Too many bad recipients, are you an address harvester?” Vielleicht werden von meinem Server aus SPAM-Mails verschickt? Vielleicht auch nicht. Da es nur ein virtueller Server ist, muss es nicht mal “mein” Server sein, wer weiß.
  • Es gibt das Ganze auch als WordPress-Plugin 🙂

Das Dumme an diesem Plugin: So lange es aktiviert ist, geht der Bilder-Upload nicht mehr, Fehlermeldung (sinngemäß aus dem Gedächtnis): “Are you sure you want to do this? Try again”; der angebotene Link führt dann aber aus dem Backend auf den eigentlichen Blog. So viel dazu.

PS: WordPress Version 2.7.1, WPIDS 0.1.2