[gelöst] csrf-Token: Anzahl der Zeichen, immer Ziffern 0-9 ?

Begonnen von RalfRog, 06 Dezember 2023, 01:23:22

Vorheriges Thema - Nächstes Thema

RalfRog

Hallo

Gibt es ein festes "Muster" nach dem das csrf-Token erzeugt wird (Anzahl und Art der Zeichen)?

Bisher hatte ich immer 20 Zeichen z.B. "csrf_209644018530033" - 5 fixe und 15 dezimale Ziffern (in den Beiträgen hier hab ich es auch so vorgefunden).
Kürzlich hatte ich nach einem Reboot 23 Zeichen => "csrf_591344292301355e15" - das "e" lässt auf Hexadez. schließen.
Heute nach dem Reboot wieder 20 Zeichen  ::)

Ich prüfe regelmäßig, ob in den Actions am Shelly zum setzen eines Readings (noch) das korrekte Token hinterlegt ist.


Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

Otto123

#1
Hallo Ralf,

Zitat von: RalfRog am 06 Dezember 2023, 01:23:22- das "e" lässt auf Hexadez. schließen.
eher auf Exponentialschreibweise :)

Ich kann Deine Frage nicht beantworten, aber warum machst Du Dir dafür nicht eine Art API Web? https://wiki.fhem.de/wiki/CsrfToken-HowTo

Nachtrag: Ich denke, generell gibt es für den Token keine große Regel, außer das er sicher, unikat und eigentlich transparent für den Client sein soll. https://datatracker.ietf.org/doc/html/rfc6749#page-10
Insofern kann der Entwickler von FHEMWEB hier jederzeit anpassen und wird dazu wohl keine verbindliche Aussage treffen ;)

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

MadMax-FHEM

Zitat von: RalfRog am 06 Dezember 2023, 01:23:22Ich prüfe regelmäßig, ob in den Actions am Shelly zum setzen eines Readings (noch) das korrekte Token hinterlegt ist.
Warum tust du das?
Passt du jedesn Mal nach einem Boot von fhem an?

Wenn ja: warum das?
Warum nicht ein extra FHEMWEB-Device für Shelly?
Dort dann ein festes Token setzen (ja nicht ganz so gut wie ab und an mal ein zufälliges neues Token / aber: bei mir läuft fhem durchaus mal lange/Monate durch und da ändert sich das Token auch nicht) und zusätzlich noch "erlaubte IPs" und evtl. sogar "erlaubte Befehle" setzen.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

rudolfkoenig

ZitatGibt es ein festes "Muster" nach dem das csrf-Token erzeugt wird (Anzahl und Art der Zeichen)?
Weiss nicht ob Folgendes als "festes Muster" gilt:
        my ($x,$y) = gettimeofday();
        ($defs{$name}{CSRFTOKEN}="csrf_".(rand($y)*rand($x))) =~s/[^a-z_0-9]//g;

ZitatInsofern kann der Entwickler von FHEMWEB hier jederzeit anpassen und wird dazu wohl keine verbindliche Aussage treffen ;)
Das sehe ich auch so :)

RalfRog

Hallo
Danke euch für die Anworten.

@Otto: klar, das Wiki hatte ich im Sommer zur Rate gezogen um die Actions im Shelly zu setzen.

Zitat von: MadMax-FHEM am 06 Dezember 2023, 09:41:35
Zitat von: RalfRog am 06 Dezember 2023, 01:23:22Ich prüfe regelmäßig, ob in den Actions am Shelly zum setzen eines Readings (noch) das korrekte Token hinterlegt ist.
Warum tust du das?
Passt du jedesn Mal nach einem Boot von fhem an?

Wenn ja: warum das?
Warum nicht ein extra FHEMWEB-Device für Shelly?
Dort dann ein festes Token setzen (ja nicht ganz so gut wie ab und an mal ein zufälliges neues Token / aber: bei mir läuft fhem durchaus mal lange/Monate durch und da ändert sich das Token auch nicht) und zusätzlich noch "erlaubte IPs" und evtl. sogar "erlaubte Befehle" setzen.

Ja warum? Nicht drauf gekommen...
Danke für den Vorschlag. Ein eigenes Web-Device mit festem Token ist sicher das Vernüftigste und erspart das neue Setzen beim Neustart  ;) , erspart das nachprüfen und ist dauerhaft.

Gruß Ralf



P.S.
Ich hatte als Konstrukt zum Auslesen
Zitat$_antw  =~ /(csrf_\d+).*(csrf_\d+)/
um die beiden gesetzten Token in den Variablen $1 und $2 zu erhalten. Das griff dann mit "csrf_591344292301355e15" nicht mehr.

FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

Otto123

Zitat von: RalfRog am 06 Dezember 2023, 10:38:42Ich hatte als Konstrukt zum Auslesen
aber der steht komplett hier ;) , für die FHEM Kommandozeile
{$FW_CSRF}oder liest Du das nicht in FHEM aus?
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

RalfRog

#6
Hallo Otto

Zitat von: Otto123 am 06 Dezember 2023, 10:45:13...
aber der steht komplett hier ;) , für die FHEM Kommandozeile
{$FW_CSRF}oder liest Du das nicht in FHEM aus?

Klar doch, zur Verabbeitung innerhalb FHEM nutze ich "$FW_CSRF"

Zum Vergleich mit den Shelly-Actions (Webhook) Button_ON & Button_OFF liefert der Shelly so etwas zurück
Check - Antwort Shelly:
{"actions":{"btn_on_url":[{"index":0,"urls":["http://<FHEM-IP>:8083/fhem?XHR=1&cmd=setreading%20shly%20Tor_Status%201&fwcsrf=csrf_134459292301355e15"],"enabled":true}],"btn_off_url":[{"index":0,"urls":["http://<FHEM-IP>:8083/fhem?XHR=1&cmd=setreading%20shly%20Tor_Status%200&fwcsrf=csrf_134459292301355e15"],"enabled":true}],"longpush_url":[{"index":0,"urls":[],"enabled":false}],"shortpush_url":[{"index":0,"urls":[],"enabled":false}],"out_on_url":[{"index":0,"urls":[],"enabled":false}],......

Für den Vergleich mit dem aktuellen Token (aus "$FW_CSRF") habe ich mir die beiden im Shelly abgelegten Token per
$_antw = (::GetFileFromURL("http://<Shelly-IP>/settings/actions",1))
$_antw =~ /(csrf_\d+).*(csrf_\d+)/
herausgeholt (bisher -> greift ja bei "e15" nicht).

Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

RalfRog

#8
@Frank:  ist ein Versuch wert  :)

Die in Summe aufwandsärmste Variante ist wohl der Vorschlag #2 von MadMax.

Gut für mich jetzt aktuell nicht, da ich den  Code um den täglichen Check und das Neusetzen nach Restart reduzieren muss  ;)

Gruß Ralf

FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder