Fehlerhafter XSRF-Token

  • Affected Version
    WoltLab Suite 5.5

    Moin vom Deich,

    seit dem vorletzten Update habe ich das Problem, dass ich beim Speichern eines neuen Artikels manchmal folgende Meldung bekomme:

    Wenn ich die Seite neu lade, geht das Speichern dann problemlos.

    Ich arbeite auf einem iMac im Safari-Browser, beides ist auf dem aktuellen Stand der Updates. Das Problem tritt nicht immer auf; manchmal geht direkt das erste Speichern schief, manchmal erst das sechste oder siebte, manchmal andauernd, manchmal gar keins. Ich habe da bisher leider kein System feststellen können.

    Meine Seite ist hier: https://ursulastrickt.de

    Für Hilfe wäre ich sehr dankbar!

    PS: Ich habe in der Suche ein paar Themen zu dem Fehler gefunden, aber irgendwie passten sie nicht zu meiner Seite oder ich habe die Lösungsansätze nicht verstanden 🙈

    Edited once, last by Ursula (May 6, 2023 at 8:05 PM).

  • Habt ihr in einem Unterverzeichnis (noch) ein weiteres WSC am Laufen?

    Es gibt nur eine Sache, die sich niemals ändern wird - Und das ist die Tatsache, dass sich die Dinge ständig ändern.

  • Da es bei 99% der letzten war mit diesem Problem:

    Checkt eure HTTP/S rewrites, bisher war es oft der Fall das die Seite zB über HTTP besucht wurde und am Ende auf HTTPS umgeleitet wird erst auf der Seite.

    Projekte:

    XIVDATA - Eorzea Database

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • Ich arbeite auf einem iMac im Safari-Browser, beides ist auf dem aktuellen Stand der Updates. Das Problem tritt nicht immer auf; manchmal geht direkt das erste Speichern schief, manchmal erst das sechste oder siebte, manchmal andauernd, manchmal gar keins. Ich habe da bisher leider kein System feststellen können.

    Bei uns auch nur im Safari, nur bei vereinzelten Usern. Nachvollziehbar bei zu lange geöffnetem Tab, in Verdacht war auch schon ein Adblock. Da ich keinen Safari habe kann ich das nicht reproduzieren, und muss mich auf die halbwegs Technikaffinen User mit dem Problem verlassen.
    Safari interpretiertda offenbar etwas anders als die anderen Browser. Der Fehler dürfte im Browser liegen. Bleibt die Frage wie man das Apple beibringt....

  • Also ich kann nur von mir Reden, wie ich es in den Griff bekommen habe.

    Bei uns war es so schlimm gewesen, das nicht nur ich, sondern auch die Nutzer genervt waren.

    Meistens war es bei der Benachrichtigung, also oben die Glocke gewesen, bei den Usern. Bei mir manchmal auch, aber eben auch bei Veränderung oder Erstellung von Themen usw. Abhilfe war nur möglich gewesen, indem man sich von allen Sitzungen abmeldet, den Cache leert, und mit Firefox unter F12 auf Webspeicher und dann den XSRF Token mit der rechten Maus löscht. Natürlich vorher Abmelden. Mit dem Safari geht das nicht, es muss mit FF gemacht werden. Dann hatten wir eine weile Ruhe gehabt. Das ganze ist seit 5.5.9 passiert. Trotzdem kam der Fehler immer wieder mal. Erst nach dem Eintrag in eine .htaccess war endlich Ruhe mit dem Fehler.

    Wohnwagen_Forum
    April 11, 2023 at 10:32 PM

    Ob es bei Euch auch so Funktioniert, müsste man probieren, wir haben auf alle Fälle seitdem 11.4. kein Vorfall mehr gehabt.

    Grüße

  • Hallo,

    vor einigen Tagen hat sich bereits ein Kunde der WoltLab Cloud in den Tickets gemeldet, bei das Problem ebenfalls im Safari (sowohl am Apple-Rechner als auch auf mobilen Apple-Geräten) auftritt. In der WoltLab Cloud können wir eine Fehlkonfiguration des Servers ausschließen und auch bei Ursula kann ich bestätigen, dass zumindest die HTTPS-Umleitung korrekt aktiv ist. Offenbar liegt hier ein Problem bzw. eine Inkompatibilität speziell mit Safari vor.

    Ich zitiere mich mal selbst aus der Diagnose im WoltLab Cloud-Ticket:

    Quote

    vielen Dank für die Informationen. Ich konnte die entsprechenden Anfragen in den Protokollen identifizieren und die Ergebnisse sind aufschlussreich: Sie haben innerhalb der zwei Minuten von 10:02:32 bis 10:04:18 Anfragen mit 4 unterschiedlichen XSRF-Tokens gesendet, darunter zwei unterschiedliche in der selben Sekunde (diese haben dann zu der Fehlermeldung geführt). Üblich ist, dass das Token solange stabil bleibt, solange der Webbrowser geöffnet bleibt bzw. die „Browsersitzung“ aktiv ist.

    Ursula Hast du Zugriff auf „Zugriffsprotokolle“ (Access Logs) für deinen Webspace? Dann wäre folgendes hilfreich, um zu prüfen, ob die Symptome die gleichen sind:

    • Wenn der Fehler das nächste Mal auftritt, dann:
      • Notiere dir eine möglichst präzise Uhrzeit.
      • Notiere dir deine IP-Adresse.
    • Prüfe anschließend die Zugriffsprotokolle rund um den notierten Zeitpunkt (Zeitpunkt bis wenige Minuten davor) für deine IP-Adresse.
    • Von besonderem Interesse sind Anfragen mit einem t=-Wert in der angefragten Seite. Dieser t=-Wert sollte eine lange zufällige Zeichenkette sein, die immer die selbe ist. Beispielsweise: t=97e1d80c5d17fd17ebe0e2fe40793c43e179aa9580956711b22f1e26e39a8fe8-0qEFU7TMf3EgRd6B4oDOEg==
      • Wenn das Format nicht übereinstimmt, dann ist das ein Problem. Es gibt auch spezielle Platzhalter-Werte wie COOKIE_NOT_FOUND.
      • Wenn innerhalb weniger Minuten mehrere unterschiedliche Werte sichtbar sind, dann ist das ein Problem. Das war bei unserem WoltLab Cloud-Kunden der Fall.
  • Ich kann das Problem bei mir in einem Tab auch nachstellen, den ich schon lange offen habe. So sehen die Anfragen von mir heute an den Server aus:

    Code
    [08/May/2023:09:13:36 +0200] "POST /core/index.php?ajax-proxy/&t=<snip-identical-token>-/PSniZ6vJSbA4mx66c4PqA== HTTP/2.0" 200 145 "https://shop.kittmedia.com/core/conversation/snip" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    [08/May/2023:09:28:36 +0200] "POST /core/index.php?ajax-proxy/&t=<snip-identical-token>-/PSniZ6vJSbA4mx66c4PqA== HTTP/2.0" 200 146 "https://shop.kittmedia.com/core/conversation/snip" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    [08/May/2023:09:36:47 +0200] "GET /support/thread/5657-unsere-zukunft-innerhalb-des-woltlab-%C3%B6kosystems/ HTTP/2.0" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    [08/May/2023:09:43:36 +0200] "POST /core/index.php?ajax-proxy/&t=<snip-identical-token>-/PSniZ6vJSbA4mx66c4PqA== HTTP/2.0" 200 145 "https://shop.kittmedia.com/core/conversation/snip" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    [08/May/2023:09:52:30 +0200] "GET /support/thread/5657-unsere-zukunft-innerhalb-des-woltlab-%C3%B6kosystems/ HTTP/2.0" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    [08/May/2023:09:58:36 +0200] "POST /core/index.php?ajax-proxy/&t=<snip-identical-token>-/PSniZ6vJSbA4mx66c4PqA== HTTP/2.0" 200 146 "https://shop.kittmedia.com/core/conversation/snip" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    [08/May/2023:11:34:34 +0200] "POST /core/index.php?ajax-proxy/&t=COOKIE_NOT_FOUND HTTP/2.0" 409 248 "https://shop.kittmedia.com/core/conversation/snip" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    [08/May/2023:11:34:34 +0200] "POST /core/index.php?ajax-proxy/&t=COOKIE_NOT_FOUND HTTP/2.0" 409 248 "https://shop.kittmedia.com/core/conversation/snip" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    [08/May/2023:11:36:51 +0200] "GET /core/proxy_sourcemap.php?<snip-long-token> HTTP/2.0" 200 455610 "https://shop.kittmedia.com/core/conversation/snip" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"

    <snip-identical-token>-/PSniZ6vJSbA4mx66c4PqA== ist dabei immer derselbe. <snip-long-token> ist wiederum ein ganz eigener.

    Als „Besonderheit“ könnte ich hier nennen, dass das MacBook zwischen 09:58:36 +0200 und 11:34:34 +0200 mal im Ruhezustand war.

    Ebenso habe ich Safari in der Zeit mal neu gestartet. Sollte er dann aber nicht beim Laden der Seite einfach einen neuen Token für die neue Sitzung bekommen? :/ ← Damit kann ich es nämlich immer reproduzieren.

  • Hallo,

    Ebenso habe ich Safari in der Zeit mal neu gestartet.

    Damit läuft die „Sitzung“ ab und das Sitzungs-Cookie wird vermutlich entfernt.

    Sollte er dann aber nicht beim Laden der Seite einfach einen neuen Token für die neue Sitzung bekommen? :/ ← Damit kann ich es nämlich immer reproduzieren.

    Ja, ein neues XSRF-Token-Cookie wird vom Server immer dann ausgehändigt, wenn eine Seite vom Framework geladen wird und kein gültiges Cookie gesendet wird. Lädt der Safari die Seiten denn nach dem Neustart komplett neu oder zeigt er erst einmal „illegal“ eine gecachte Version an? Illegal deshalb, weil Caching durch den Server eigentlich unterdrückt wird.

  • Lädt der Safari die Seiten denn nach dem Neustart komplett neu oder zeigt er erst einmal „illegal“ eine gecachte Version an? Illegal deshalb, weil Caching durch den Server eigentlich unterdrückt wird.

    Dieses Verhalten habe ich bei Chromium (ich spreche explizit davon und nicht von Chrome!) in der mobilen Variante auch schon beobachtet.

    Projekte:

    XIVDATA - Eorzea Database

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • Lädt der Safari die Seiten denn nach dem Neustart komplett neu oder zeigt er erst einmal „illegal“ eine gecachte Version an? Illegal deshalb, weil Caching durch den Server eigentlich unterdrückt wird.

    Möglich, da ich den Cache-Control-Header überschrieben habe (als Teil des Plugins Power-Einstellungen). Eventuell ist das bei den anderen hier auch aktiv? Wenn ich den deaktiviere, kann ich das Problem nicht mehr reproduzieren.

    Diese Request ist aber irrelevant, weil das der Proxy für die Sourcemap ist und komplett autark vom Rest der Software arbeitet. Die hat nichts mit Sessions zu tun.

    War nur der Vollständigkeit halber. :)

  • Tim Düsterhus

    Moin Tim,

    vielen Dank für Deine Antwort. Ich habe Zugriff auf meine Logfiles; ich habe den Fehler eben wieder gehabt und den Vorgang in den Files auch gefunden:

    Ich kann damit jetzt eher wenig anfangen; die t=-Werte sehen eigentlich so aus, wie Du es oben beschrieben hast.

    Code
    ursulastrickt.de *snip* - - [08/May/2023:19:09:28 +0200] "POST /article-add/ HTTP/1.1" 200 65586 "https://ursulastrickt.de/article-add/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    ursulastrickt.de *snip* - - [08/May/2023:19:09:28 +0200] "POST /background-queue-perform/ HTTP/1.1" 200 1 "https://ursulastrickt.de/article-add/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
    ursulastrickt.de *snip* - - [08/May/2023:19:09:28 +0200] "POST /a-mtm/matomo.php?action_name=Artikel%20hinzuf%C3%BCgen%20-%20Ursula%20strickt&idsite=1&rec=1&r=110071&h=19&m=9&s=28&url=https%3A%2F%2Fursulastrickt.de%2Farticle-add%2F&urlref=https%3A%2F%2Fursulastrickt.de%2Farticle-add%2F&_id=0bcb876ab57caee9&_idn=0&send_image=0&_refts=1683563933&_ref=https%3A%2F%2Fl.facebook.com%2F&pdf=1&qt=0&realp=0&wma=0&fla=0&java=0&ag=0&cookie=1&res=2048x1152&pv_id=iMRGoJ&pf_net=74&pf_srv=147&pf_tfr=0&pf_dm1=87&uadata=%7B%7D HTTP/1.1" 204 - "https://ursulastrickt.de/article-add/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"

    Edited 2 times, last by Tim Düsterhus: IP-Adressen entfernt. (May 9, 2023 at 9:20 AM).

  • Hallo,

    in deinem Fall liegt es daran, dass du das Artikelsystem nutzt und dort ein „reguläres Formular“ zum Einsatz kommt – neue Antworten in Themen werden „auf der selben Seite eingefügt“ und damit über AJAX übertragen.

    Bei einem regulären Formular wird das XSRF-Token nicht in der Adressleiste übertragen, sondern im sogenannten „Body“ und ist damit in den Zugriffsprotokollen nicht sichtbar [1]. Das ist aus Sicherheitsgründen grundsätzlich gut und so gewollt, in diesem Fall macht es die Fehlerdiagnose aber deutlich schwieriger.

    [1] Ab WoltLab Suite 6.0 wird auch für AJAX-Anfragen das XSRF-Token Stück für Stück aus der Adresse entfernt.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!