CSRF Token in Link in Reading

Begonnen von JoWiemann, 02 März 2025, 13:27:03

Vorheriges Thema - Nächstes Thema

JoWiemann

Hallo,

ich möchte in einem Reading einen Link zu einem set Befehl hinterlegen. Bei gesetztem randomize CSRF Token muss dann im Link entsprechen aktualisiert werden. Ich dachte ich könnte das über FW_detailFn machen, scheint aber nicht zu funktionieren. Wie kann ich das am elegantesten lösen.

Btw. Wann werden im Webseiten Generierungsprozess FW_detailFn und FW_summaryFn von FhemWeb aufgerufen?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Otto123

Hallo Jörg,

einfach abfragen?
ZitatFHEM kennt natürlich seinen Token und man hat einfachen Zugriff mit der Variable $FW_CSRF. Diese Varibale enthält nicht den Token an sich, sondern den kompletten String zum Anhängen an eine URL in der Form: &fwcsrf=csrf_387849633005507

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

Ich hatte gerade kein Problem mit Folgendem im DetailFn:

readingsSingleUpdate($defs{$d}, "link", "<html><a href='$FW_ME?cmd=set $d reopen'>reopen</a></html>", 0);
Das CSRF Token wird in fhemweb.js automatisch hinzugefuegt, das href durch eine JS-Routine ersetzt, was den Aufruf ohne Fensterwechsel ermoeglicht.

Statt Reading empfehle ich aber ein Internal:
$defs{$d}{link} = "<html><a href='$FW_ME?cmd=set $d reopen'>reopen</a></html>";


ZitatBtw. Wann werden im Webseiten Generierungsprozess FW_detailFn und FW_summaryFn von FhemWeb aufgerufen?
SummaryFn in der Uebersicht (aka Raumansicht), DetailFn auf der DetailSeite.
Jedenfalls war so mein Plan, aber Benutzer und Modulautoren sind nicht planbar, deswegen wird SummaryFn mit dem deviceOverview FHEMWEB Attribut auch in der Detailansicht, und mit dem FW_addDetailToSummary Internal DetailFn in der Uebersicht angezeigt.

JoWiemann

Hallo Rudi,

vielen Dank für die Infos.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Zitat von: Otto123 am 02 März 2025, 16:14:36Hallo Jörg,

einfach abfragen?
ZitatFHEM kennt natürlich seinen Token und man hat einfachen Zugriff mit der Variable $FW_CSRF. Diese Varibale enthält nicht den Token an sich, sondern den kompletten String zum Anhängen an eine URL in der Form: &fwcsrf=csrf_387849633005507

Gruß Otto

Hallo Otto,

danke für den Hinweis, den ich kenne, der aber leider nur bei der Erzeugung des Readings funktioniert. Bei einem Reading, dass sich nicht ändert oder dass sich erst lange nach einem Neustart ändern wird auch das CSRF-Token nicht geändert.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Otto123

Hallo Jörg,

ich hatte bei dem set Befehl irgendwie ein Stück Perl Code im Kopf der erst in dem Moment die Variable evaluiert und damit den Token aktuell einbaut. Sowas in der Art
set Test {("http://localhost:8083/fhem?cmd=set%20Office%20on$FW_CSRF")}Habe ich nicht genug nachgedacht.  ::)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz