Nutzung des csrfToken - Anleitung?

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

Vorheriges Thema - Nächstes Thema

ManuZz

Mag sein das es irgendwann unüberschaubar wird - aber nach dem neu aufsetzen werde ich einfach nichts mehr updaten. Es gibt dann nur Gründe dagegen. Ausserdem hat es jahrelang funktioniert. Und da ich kein Zugriff von aussen habe, gibt es auch keine Sicherheitsprobleme.
Ich wünsche euch trotzdem viel Spaß bei der Weiterentwicklung des fhem. Es ist nur schade das nicht an Menschen gedacht wird die das nicht beruflich machen, bzw keine Programmierer sind. Bis hierher war es immer easy zu nutzen. auch die Einbindung der Heizung war einfach. Dumm ist halt wenn man durch ein Sicherheitsfeature nichts mehr nutzen kann. und es auch keine richtige Anleitung gibt wie man es als noob nutzen kann, bzw die Abschaltung einfach nicht funktioniert.

CoolTux

Es kommt selten vor, aber ich gestehe. Ich bin sprachlos.


Grüße
Leon
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: ManuZz am 03 März 2017, 20:48:00
Und da ich kein Zugriff von aussen habe, gibt es auch keine Sicherheitsprobleme.
Doch die gibt es, Du hast es bloß nicht verstanden.  :-X

Gerade jetzt, Wenn Du dies liest und im zweiten Tab dein FHEM offen hast.

Schönes Leben noch
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

ManuZz

Was nicht vorkommt, ausser ich versuche mit neuen Features klarzukommen. Da ich dies nun aber aufgebe und die Funktionen über eine Html Seite steuere, scheint alles gut zu sein. Bisher hat mein fhem noch keiner gehackt... halte ich auch für sehr unwahrscheinlich.
Aber ist ja schön zu hören wie ihr alle gut damit zurechtkommt. Muss ja auch kein normaler Mensch nutzen können.

Otto123

Hallo ManuZz,

"Vogel Strauss" Systeme kenne ich zur Genüge, die bringen auf Dauer auch nicht den gewünschten "Frieden".

Warum Du Dir dein System "zerbastelt" hast lag bestimmt nicht am Update. Zumal Du auch ganz einfach hättest zurück gehen können.
Jetzt mit neu aufgesetztem System könntest Du auch ganz einfach trotz Version 5.8 vorübergehend auf featurelevel 5.7 schalten und die Zeit nutzen um Dir Wissen anzueignen.

Aber irgendwie wolltest Du ja alle Ideen zur Hilfe nicht wirklich.

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

Otto123

Zitat von: rudolfkoenig am 28 Februar 2017, 15:35:48
Muss man hier alles selber machen? :)

curl "http://localhost:8083/fhem?cmd=set%20Office%20on&XHR=1&fwcsrf="`curl -s -D - 'http://localhost:8083/fhem&XHR=1' | awk '/X-FHEM-csrfToken/{print $2}'`

noch mal zurück zum Thema. Ich versuche eigentlich mehrere Schritte zur "Problembewältigung" beim Nichtprogrammierer auszuarbeiten und in einen Wiki Artikel zu schreiben. Mir fehlt aber offenbar etwas an Wissen. Rudis Einzeiler bekomme ich so nicht hin. Es kommt zu unterschiedlichsten Fehlermeldungen, ich habe das Gefühl, das System gerät dabei scheinbar in unterschiedliche Zustände. Aber ziemlich stabil kommt bei der Verknüpfung der url "nach Rudi" die Ausschrift:
curl: (3) Illegal characters found in URL
Obwohl es, wenn ich den String mit echo ausgebe gut aussieht ->
curl http://raspib:8083/fhem?cmd=set%20Aktor1%20on&XHR=1&fwcsrf=fhem_36945614191211.9
Diese Zeile dann wiederum ausgeführt bringt wechselnde Ausgaben in der Art:
pi@raspib3:~ $ curl http://raspib:8083/fhem?cmd=set%20Aktor1%20on&XHR=1&fwcsrf=fhem_36945614191211.9
[1] 26947
[2] 26948

Die einzige Variante die bei mir als Einzeiler geht ist die folgende, mit separater Übergabe des Tokens über --data :
curl --data "fwcsrf=$(curl -s -D - 'http://localhost:8083/fhem&XHR=1' | awk '/X-FHEM-csrfToken/{print $2}')" http://localhost:8083/fhem?cmd=set%20Office%20on

Diese könnte man in Scripten dann so verwenden, um bei mehreren Befehlen nicht jedes Mal den Token neu auszulesen:
token=$(curl -s -D - 'http://<host>:8083/fhem&XHR=1' | awk '/X-FHEM-csrfToken/{print $2}')
curl --data "fwcsrf=$token" http://<host>:8083/fhem?cmd=set%20Aktor1%20off

Soll ich das so in die Anleitung aufnehmen?

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

Christoph Morrison

Zitat von: Otto123 am 04 März 2017, 17:56:52
noch mal zurück zum Thema. Ich versuche eigentlich mehrere Schritte zur "Problembewältigung" beim Nichtprogrammierer auszuarbeiten und in einen Wiki Artikel zu schreiben. Mir fehlt aber offenbar etwas an Wissen. Rudis Einzeiler bekomme ich so nicht hin. Es kommt zu unterschiedlichsten Fehlermeldungen, ich habe das Gefühl, das System gerät dabei scheinbar in unterschiedliche Zustände. Aber ziemlich stabil kommt bei der Verknüpfung der url "nach Rudi" die Ausschrift:
curl: (3) Illegal characters found in URL
Obwohl es, wenn ich den String mit echo ausgebe gut aussieht ->
curl http://raspib:8083/fhem?cmd=set%20Aktor1%20on&XHR=1&fwcsrf=fhem_36945614191211.9

Bei HTTP-Header-Feldern hängt immer CR (carriage return) LF (line feed) an. Deshalb sieht die Ausgabe zwar gut aus, aber übernimmt man Rudis Statement so, hängt man das CRSF-Token + CR + LF an den cURL-Aufruf an:

$ curl -s -D - 'http://fhem.example.org:8083/fhem&XHR=1' | awk '/X-FHEM-csrfToken/{print $2}' | od -c
0000000    c   s   r   f   _   1   5   9   3   0   5   1   6   3   7   5
0000020    3   9   7   7  \r  \n
0000026


Das hier funktioniert als Einzeiler:
curl "http://fhem.example.org:8083/fhem?cmd=set%20Office%20on&XHR=1&fwcsrf="`curl -s -D - 'http://fhem.example.org:8083/fhem&XHR=1' | awk '/X-FHEM-csrfToken/{print $2}' | tr -d "\r\n"`

Otto123

Danke Dir, sowas in der Art hatte ich auch gelesen, wusste als "Linux Schwacher" aber nicht wie man damit umgehen kann :)
| tr -d "\r\n"

Ok noch eine Frage: Ich wollte die Einrichtung eines API Webs Step by Step beschreiben, dabei ist mir aufgefallen: Wenn man in der Oberfläche ganz brav auf
attr <WEb Name> csrfToken geht und dort none reinschreibt und dann auf den attr Knopf drückt macht es wusch und man hat einen weißes Browser Fenster.
Nach zurück im Browser ist auch kein Eintrag passiert.
Ist das ein Sicherheitsfeature oder eine Bug?
Wenn man in der Kommandozeile attr WEBapi csrfToken none eingibt funktioniert alles wie gewünscht. Bei jedem definiertem WEB :)

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

JoWiemann

Rudolf hat heute einen Fehler gefixt der auftrat, wenn das Web nicht Web hieß.

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

Christoph Morrison

Zitat von: Otto123 am 04 März 2017, 18:39:09
Ok noch eine Frage: Ich wollte die Einrichtung eines API Webs Step by Step beschreiben, dabei ist mir aufgefallen: Wenn man in der Oberfläche ganz brav auf
attr <WEb Name> csrfToken geht und dort none reinschreibt und dann auf den attr Knopf drückt macht es wusch und man hat einen weißes Browser Fenster.
Nach zurück im Browser ist auch kein Eintrag passiert.
Ist das ein Sicherheitsfeature oder eine Bug?
Wenn man in der Kommandozeile attr WEBapi csrfToken none eingibt funktioniert alles wie gewünscht. Bei jedem definiertem WEB :)

Konnte ich eben mit brandaktuellem FHEM nicht reproduzieren.

Otto123

Coole Sache, tritt bei mir auch nicht mehr auf. Ich schwöre ich habe es an einem relativ kleinem Testsystem gehabt und habe gerade noch update gemacht (es trat vor und nach dem Update auf)
Und jetzt nicht mehr!  :-[
Ich schwöre ich habe noch nichts getrunken.

Naja gut, dann streichen wir das.

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

Otto123

So ich habe es jetzt einfach mal gemacht -> https://wiki.fhem.de/wiki/CsrfToken-HowTo
Jetzt könnt ihr mich hauen  8)

Das dünnste Brett steht ganz unten  :-X ich hoffe diese kurze Zusammenfassung ist im Sinne der Entwickler. Ich bin für jede Kritik dankbar!

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

Das mit dem FeatureLevel zurück drehen würde ich raus nehmen. Ist zu da es ja nur um den CSRF Token geht.
An sonsten wie immer saubere Arbeit Otto. Danke Dir. Eventuell findet sich noch der ein oder andere der ergänzen möchte.



Grüße
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

Fällt mir gerade ein. Fester Token geht ja auch. Könnte man noch erwähnen  :)
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 04 März 2017, 20:01:29
Fällt mir gerade ein. Fester Token geht ja auch. Könnte man noch erwähnen  :)
Ja könnte man, aber macht es praktisch gesehen Sinn? Man müsste die URL auch ändern, man würde sich das Auslesen sparen. Aber ohne Eingriff bringt das nichts.

Ja das mit dem Featurelevel ist eigentlich ein anderes Thema, aber da macht man keinen Eingriff in der Definition des FHEMWEB. Und es ist vielleicht für den Ottonormal Nutzer am wenigsten suspect. Ich habe update gemacht, es geht was nicht, ich dreh schnell den Featurelevel zurück und muss kein restore machen.
Zeit zum lesen und nachdenken.

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