Nutzung des csrfToken - Anleitung?

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

Vorheriges Thema - Nächstes Thema

Otto123

Hallo,

ich habe da aktuell ein Problem. Mein damals getesteter Code 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"`
Wurde jetzt quasi aktuell zu Recht bemängelt. Damit wird Office auf on?XHR=1 gesetzt anstatt auf on.
Wenn man das damals diskutierte, mit RFC begründete und von mir getestete ? gegen ein & ersetzt, funktioniert es wieder.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"`

Hat sich bei FHEMWEB was geändert?
Liegt es am neuen raspbian?

Ich kann leider nicht wirklich sagen, was richtig und was falsch ist. Ich wollte es nur nachvollziehbar aufschreiben.
Mir ist dann gleich noch aufgefallen, dass das damals empfohlene --data-raw beim curl im raspbian nicht existiert.
Zitat-d, --data DATA     HTTP POST data (H)
     --data-ascii DATA  HTTP POST ASCII data (H)
     --data-binary DATA  HTTP POST binary data (H)
     --data-urlencode DATA  HTTP POST data url encoded (H)

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

ZitatWenn man das damals diskutierte, mit RFC begründete und von mir getestete ? gegen ein & ersetzt, funktioniert es wieder.
Ich bin noch auf dem Stand, dass fuer CGI ? den Pfad von den Argumenten trennt, und Argumente trennt man mit &. Ich kann aus dem verlinkten RFC nicht rauslesen, dass ? auch als Argument-Trenner empfohlen ist. Ich habe in FHEMWEB den Parser (FW_digestCgi) mit diesem Wissen gebaut und es seitdem (2007-12-31, r141) nicht geaendert, siehe svn blame & svn log. Falls ich mich irre, bitte korrigiert mich.

Christoph Morrison

#77
Das cURL in Wheezy ist 7.26.0-1+wheezy22, das in Stretch ist 7.52.1-5+deb9u2. --data-raw wurde erst mit 7.43.0 in cURL aufgenommen. Ein aktuelles cURL sollte also auch --data-raw unterstützen.

ZitatWenn man das damals diskutierte, mit RFC begründete und von mir getestete ? gegen ein & ersetzt, funktioniert es wieder.

Da hattest du mich damals aber missverstanden: In einer gültigen URL gibt es genau einen möglichen Platz für ein ?: Zwischen Pfad und Argumenten. So steht's im RFC:
Zitathttp_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]


Otto123

Gut dann habe ich den hier https://forum.fhem.de/index.php/topic,68133.msg599120.html#msg599120 gründlich missverstanden.
curl war zumindest damals noch im raspbian auf einer Version 7.38 und ist es heute immer noch. Somit ist dieser Code fürs Wiki unbrauchbar.

Ich habe das im Wiki korrigiert.

Dann habe ich offenbar dieses Missverständnis damals nicht nochmal explizit geprüft und einfach noch final in den Text übernommen. Das ist blöd. Das es bis heute (also im letzten halben Jahr) keiner gemerkt hat oder sich gemeldet hat ist auch blöd.

Ich gebe ne Runde Popcorn aus  ;D

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 28 November 2017, 21:57:00
Dann habe ich offenbar dieses Missverständnis damals nicht nochmal explizit geprüft und einfach noch final in den Text übernommen. Das ist blöd. Das es bis heute (also im letzten halben Jahr) keiner gemerkt hat oder sich gemeldet hat ist auch blöd.

Ja ich hatte halt gedacht, dass du das korrigierst und nie wieder ins Wiki geguckt. ¯\_(ツ)_/¯