Nutzung des csrfToken - Anleitung?

Begonnen von ManuZz, 28 Februar 2017, 10:03:17

Vorheriges Thema - Nächstes Thema

ManuZz

Hallo zusammen,

ich bin hier sicher der noobigste unter allen, aber ich habe keine Anleitung gefunden wie ich das csrfToken einbaue. Das auf none setzen hat einmal funktioniert. Nun bekomme ich ein neuen csrfToken Fehler im log angezeigt. sieht nach einem neu generierten Token aus.
Ich würde ja auch warten (auch wenn ich nicht weiß auf was, denn ich habe nirgends etwas gefunden wie ich das schöne Sicherheitsfeature einbaue), aber es sind alle meine Lichtschalter in der Wohnung lahmgelegt.

Ich habe in der config dies stehen:

attr WEB csrfToken none
attr WEBphone csrfToken none
attr WEBtablet csrfToken none

Aber bekomme immer noch den Fehler: FHEMWEB WEB CSRF error:  ne fhem_50100039103845.3. For detals see the csrfToken FHEMWEB attribute

Leider bin ich auch nicht der ultimative crack, darum habe ich keine Ahnung wie ich nun weiter komme. Ich habe hier im Forum auch nur gelesen das man es hätte einbauen sollen, aber nicht wie.
Für Hilfe wäre ich sehr dankbar...

rudolfkoenig

#1
Zitatkeine Anleitung gefunden wie ich das csrfToken einbaue
Wohin?

Falls man ueber FHEMWEB einen Befehl (cmd=...) von einem "Drittsystem" (nicht der Browser, der die FHEMWEB Seite aufgerufen hat) absetzen will, dann muss man fwcsrf=<TOKEN> setzen. <TOKEN> ist im HTTP Header als X-FHEM-csrfToken gesetzt, es gibt im HTML <body> Tag auch ein fwcsrf Attribut.

Falls man fuer FHEMWEB eine Seite generiert (z.Bsp. im Modul eigenen FW_detailFn), dann muss man an alle <a> Links mit cmd=... $FW_CSRF dranhaengen.

Beide Punkte betreffen normalerweise nur Programmierer.

"Normale" Benutzer sind nur dann betroffen, falls sie mit dem weblink Modul, htmlCode Variante FHEM-Befehle aufrufen, dann muss man $FW_CSRF dranhaengen.

Edit: Tippfehler korrigiert

ManuZz

Ok, ich habe gerade eingesehen das ich überhaupt keine Ahnung habe. Ich werd glaub ich einfach ein Fallback auf die alte Version machen und alles dort nochmal einrichten und fhem einfach nie wieder updaten, da die Abschaltung in der config nicht funktioniert und ich das token nicht eingebaut bekomme. Dazu fehlen mir einfach die Kenntnisse.
Trotzdem danke für die Sicherheit.


Grüße

Falls jmd die Zeit und Nerven hat, freue ich mich trotzdem über Hilfe. Meine Links sehen so aus:

<td><div class="col3"><a class="button" onclick="macheRequest('http://192.168.178.30:8083/fhem?cmd.Steckdose3=set Steckdose3 on&amp;room=Wohnzimmer')"><p>AN</p></a></div></td>


CoolTux

Zitat von: ManuZz am 28 Februar 2017, 11:28:40
Ok, ich habe gerade eingesehen das ich überhaupt keine Ahnung habe. Ich werd glaub ich einfach ein Fallback auf die alte Version machen und alles dort nochmal einrichten und fhem einfach nie wieder updaten, da die Abschaltung in der config nicht funktioniert und ich das token nicht eingebaut bekomme. Dazu fehlen mir einfach die Kenntnisse.
Trotzdem danke für die Sicherheit.


Grüße

Falls jmd die Zeit und Nerven hat, freue ich mich trotzdem über Hilfe. Meine Links sehen so aus:

<td><div class="col3"><a class="button" onclick="macheRequest('http://192.168.178.30:8083/fhem?cmd.Steckdose3=set Steckdose3 on&amp;room=Wohnzimmer')"><p>AN</p></a></div></td>

Und werden von wo aufgerufen? Aus einem FHEM weblink Device oder von irgendwo anders her?
Mal mehr Info bitte damit man auch helfen kann.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rabehd

Ich hänge mich mal dran/rein, weil ich es auch noch nicht richtig verstanden habe.
Erstmal habe ich "attr WEB csrfToken none" gesetzt.

Ich sende Befehle per Tasker vom Handy.
Beispiel: http://ip.net:port/fhem?cmd.AnwesenheitXX=set%20AnwesenheitXX%20noda&XHR=1

Was muss ich ändern?
Auch funktionierende Lösungen kann man hinterfragen.

CoolTux

Entweder eigene Webinstanz erstellen und den Token auf none setzen und dann nur Tasker darauf zugreifen lassen.
Oder Du rufst einmalig vor jedem senden eine FHEM Webseite auf und extrahierst den Token.

Ich suche mal eine Anleitung raus, hatte da mal was gesehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

#7
Zitat von: rudolfkoenig am 28 Februar 2017, 10:15:45
Beide Punkte betreffen normalerweise nur Programmierer.
Hi,

das stimmt so ja nicht. Es betrifft denjenigen, der einfach von irgendwo (z.B. zweiter PC im Heimnetz) per url etwas in FHEM setzen oder abfragen will.

Wenn man z.B. bisher von einer anderen Linux Maschine mit einem curl http://$host:8083/fhem?cmd=set%20$name%20$event > /dev/null
einen Dummy setzen konnte, geht das jetzt nicht mehr.
Es geht auch nicht, wenn ich an die obige url den aktuellen Token in der Art &fwcsrf=fhem_3450307859263.46 anhänge.
Den aktuellen Token kann man ja zu diesem Zweck einfach in der Startseite von FHEM im Quelltext sehen, da einige interne Links genauso konstruiert sind. Daher schließe ich auch mal Schreibfehler aus  ;)

Die url  http://$host:8083/fhem?cmd=set%20$name%20$event&fwcsrf=fhem_3450307859263.46
funktioniert zwar im Browser wie bisher, aber mit curl geht es überhaupt nicht, auch nicht mit wget - was habe ich sonst noch auf der Kommandozeile für Varianten?
Ganz abgesehen davon, dass ich noch nicht weiß, wie ich das Token aus der aktuellen FHEMWEB Seite auf der Kommandozeile extrahiert bekomme.

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

CoolTux

#8
In dem Du den Header parst wenn Du eine FHEMWEB Seite auf rufst. Zum Beispiel die Startseite.

http://<fhemIP>:8083/fhem?XHR=1
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

Zitat von: CoolTux am 28 Februar 2017, 12:19:06
parst
Kannst Du bitte ohne viel Aufwand einem der mit Powershell Kopierroutinen erstellen kann, mal ganz früher Turbopascal und Assembler programmiert hat und der shell und batch Routinen schreibt - dieses eine Wort noch etwas erweitern?    :-*

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

Wuppi68

Powershell/Batch/Shell

für welches Sytsem brauchst Du das denn?
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

ManuZz

ZitatUnd werden von wo aufgerufen? Aus einem FHEM weblink Device oder von irgendwo anders her?
Mal mehr Info bitte damit man auch helfen kann.

Ich habe eine kleine Webseite auf meinen raspberry laufen (dort läuft auch fhem) und dort sind die die aufrufe eingepflegt.

Danke schonmal für die Hilfe!

Otto123

http://<fhemIP>:8083/fhem?XHR=1
Die Zeile ergibt bei mir einen leeren Inhalt   ???

Ok ich kann einfach die Startseite holen und mit sed durchsuchen, ist das der Weg?

@wuppi68 ich habe auch noch Windows Rechner, eigentlich nur - außer meinen Himbeeren  8)

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

Wuppi68

Zitat von: Otto123 am 28 Februar 2017, 12:41:30
http://<fhemIP>:8083/fhem?XHR=1
Die Zeile ergibt bei mir einen leeren Inhalt   ???

Ok ich kann einfach die Startseite holen und mit sed durchsuchen, ist das der Weg?

@wuppi68 ich habe auch noch Windows Rechner, eigentlich nur - außer meinen Himbeeren  8)

Gruß Otto

Also ich würde nach dem Token greppen und dann schauen wie ich das Teil am einfachsten extrahieren kann ... sed scheint mir ein wenig zu mächtig dafür - obwohl es dort auf jeden Fall auch geht
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

CoolTux

Zitat von: Otto123 am 28 Februar 2017, 12:41:30
http://<fhemIP>:8083/fhem?XHR=1
Die Zeile ergibt bei mir einen leeren Inhalt   ???

Ok ich kann einfach die Startseite holen und mit sed durchsuchen, ist das der Weg?

@wuppi68 ich habe auch noch Windows Rechner, eigentlich nur - außer meinen Himbeeren  8)

Gruß Otto

Parsen ist Im Grunde einfach nur das auslesen nötiger Daten. Das kann man in Deinem Fall zum Beispiel mit mit grep machen und das Ergebnis als Variable zur Verfügung stellen.

Die Seite ist weiß aber der Quelltext sollte schon zu mindest den Header enthalten
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net