Autor Thema: 01_FHEMWEB.pm - & Zeichenreferenz (nur im Quelltext sichtbar) - Diskussion  (Gelesen 221 mal)

Offline HomeAuto_User

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 567
Hallo,

ich habe mich mal beim Debuggen durchgeforstet und bin durch Zufall auf einen Hinweis im Quelltext gestoßen.
Sichtbar ist dieser nur wenn die Syntax Hervorhebung aktiv ist. (Im Bild zu sehen)

"&" startete keine Zeichenreferenz. ("&" sollte warscheinlich als "&" kodiert sein.)
Wenn man im Modul 01_FHEMWEB.pm nun folgendes fixt, so ist es richtig aufgelöst. (Zeile 518)
(Ausgehend von der Version # $Id: 01_FHEMWEB.pm 19904 2019-07-28 08:53:49Z rudolfkoenig $ )

IST
  $FW_CSRF = (defined($defs{$FW_wname}{CSRFTOKEN}) ?
                "&fwcsrf=".$defs{$FW_wname}{CSRFTOKEN} : "");

ändern in
  $FW_CSRF = (defined($defs{$FW_wname}{CSRFTOKEN}) ?
                "&fwcsrf=".$defs{$FW_wname}{CSRFTOKEN} : "");

somit ist der Hinweis weg. Getestet wurde das ganze mit dem Firefox v68.0.1

MfG


EDIT:
Zusätzlich ist der selbe Fehler in Zeile 1664.

"$FW_ME/FileLog_logWrapper?dev=$lfn&type=text&file=$fn"); durch
"$FW_ME/FileLog_logWrapper?dev=$lfn&type=text&file=$fn"); ersetzen
« Letzte Änderung: 10 August 2019, 22:21:30 von HomeAuto_User »
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128 und andere ;-)

Online Otto123

  • Hero Member
  • *****
  • Beiträge: 13242
  • schon mal restore trainiert?
    • Otto's Technik Blog
Nach meinem Wissen wird dort die Variable $FW_CSRF befüllt. Die enthält danach die Zeichenkette in der Form &fwcsrf=csrf_387849633005507, die dann für die Verwendung des csrf Tokens an jeden Befehl in der url angehängt wird.
Ich befürchte nach dem "Fix" funktioniert nix mehr.  ::)

Aber ich bin da kein Spezi :)

Edit: Ich habe ähnliche Erfahrungen mit https://www.shellcheck.net/ gemacht. Wenn man die dortigen empfohlenen "Code Richtigstellungen" alle einarbeitet, funktioniert anschließend nichts mehr.

Gruß Otto
« Letzte Änderung: 10 August 2019, 13:26:07 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline HomeAuto_User

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 567
Grüße in die selbe Stadt :-)

@Otto, du hast es richtig widerlegt was dort passier aber das & wird durch die Zeichen & "ersetz" siehe https://wiki.selfhtml.org/wiki/Referenz:HTML/Zeichenreferenz.
Wir könnten es auch Kompatiblität nennen. Ich selbst hatte soche Fehler auch schon mit anderen Zeichen oder Umlauten welche fehlerhaft dargestellt werden. Wenn man diese "uns normale Schreibweise" anpasst in die kompatible, so sind die Zeichen für uns auch wieder "richtig". Es liegt ja der Zeichensatz.

Eine NICHTFUNKTION konnte ich nicht bestätigen.

Edit: Aufgrund das ja der Zeichensatz und mehre Programmiersprachen hier zum tragen kommen, je nach Umsetzung und Zusammenspiel, kann glaube nur Rudolf direkt selbst mal schauen und es bewerten. Ich selbst hatte an anderere Stelle nur das Beispiel gehabt, das nichts ging mit der normalen Schreibweise und mit Änderung bzw. Anpassung ging es.

Es kann ja auch nun wieder nur sein, das der eine Browser das falsch interprätiert und / oder eine andere Software nicht. Sowas ist bei der "Code übergreifenden Programmierung" immer buggi.
« Letzte Änderung: 10 August 2019, 13:32:27 von HomeAuto_User »
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128 und andere ;-)

Online Otto123

  • Hero Member
  • *****
  • Beiträge: 13242
  • schon mal restore trainiert?
    • Otto's Technik Blog
Da das & Zeichen (so wie es ist, also nicht "encoded") in urls aber sehr häufig auftritt, ist es nicht eine Art Trenner/Einleiter für Parameter/Variablen? Also so hatte ich das an der Stelle immer verstanden.  ???

Ich rede da ziemlich unwissend daher, will es aber gerne verstehen :)
Ist es nicht so, das an der Stelle die URL "vorbereitet" wird? Und da gilt doch URL Encoding, da wird das Leerzeichen ja z.B. als %20 kodiert. https://de.wikipedia.org/wiki/URL-Encoding und das & hat eine besondere Bedeutung.
Was Dir da angezeigt wird ist doch html Encoding? Das passiert doch bestenfalls in irgendeinem Prozess "danach"? Und da wird doch dann das Leerzeichen als   dargestellt.

Am Ende ist es für die Funktion "egal" an welcher Stelle es umkodiert wird?
« Letzte Änderung: 10 August 2019, 14:05:07 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20871
Das & wird verwendet, um im URL (die Eingabezeile oben im Browser) Parameter voneinander zu trennen: room=Kueche&fwcsrf=XXX
Wenn man im Wert ein & unterbringen moechte, dann schreibt man %26: room=Kueche%26Bad fuer Kueche&Bad

& hat auch im HTML eine Sonderbedeutung: es leitet spezielle Sequenzen ein, wie &auml fuer ä usw.
Damit man & im HTML verwenden kann, schreibt man es als & also Kueche&Bad.

Ich bin z.Zt. der Ansicht, dass so wie es in FHEMWEB verwendet ist, richtig ist, da Zeile 518 und 1664 bereiten ein URL vor.
Zustimmung Zustimmung x 2 Liste anzeigen

Offline HomeAuto_User

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 567
Solange die Funktion gegeben ist und wir es so belassen, dann sehen wir das Ganze als Anregung einer Diskussion :-)
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128 und andere ;-)