Forum: Mikrocontroller und Digitale Elektronik ESP8266/HTML + JavaScript -> Parameter verbergen


von Jörg (Gast)


Lesenswert?

Servus,

ich habe auf meinem ESP8266 einen kleinen Webserver laufen, der mit HTML 
und JavaScript Zugriff auf einen MQTT Broker zulässt. Soweit läuft alles 
gut. Allerdings sind sämtliche Parameter für den Zugriff auf den MQTT 
Server in JS als Parameter abgelegt und damit für den Anwender lesbar. 
JS an sich bietet ja keine echte Möglichkeit Parameter versteckt zu 
handhaben (ausser vielleicht als Hash).

Hat jemand Erfahrung mit dieser Problemstellung? Also wie biete ich die 
Möglichkeit, bei der Nutzung von JS Parameter "versteckt" zu übergeben. 
Eine Art INI-File oder so... Da ich die Daten via SPIFF nutze, wäre das 
Ini-File legitim und - solange nicht direkt sichtbar- auch in dem Fall 
sicher genug.

Danke!
Jörg

von TR.0LL (Gast)


Lesenswert?

Daten bei bedarf nachladen.

von Siggi (Gast)


Lesenswert?

TR.0LL schrieb:
> Daten bei bedarf nachladen.

Respekt TR.0LL - das ist der Grund warum Foren wie dieses immer mehr zu 
einem unnötigen Tummelplatz von gelangweilten Usern verkommt, die 
anstatt zu helfen nutzlose Info posen. Was soll der OP mit dieser 
Antwort anfangen? Dann doch lieber nichts sagen - frei nach dem 
Nuhr'schen Prinzip "Wenn man keine Ahnung hat, einfach mal die F...e 
halten!"

von Sascha W. (sascha-w)


Lesenswert?

Jörg schrieb:
> Servus,
>
> ich habe auf meinem ESP8266 einen kleinen Webserver laufen, der mit HTML
> und JavaScript Zugriff auf einen MQTT Broker zulässt. Soweit läuft alles
> gut. Allerdings sind sämtliche Parameter für den Zugriff auf den MQTT
> Server in JS als Parameter abgelegt und damit für den Anwender lesbar.
Wo? Im Code des ESP dann kannst du das so vielleicht verstecken oder im 
C-Code einbauen. Oder im Browser des Nutzers, da macht das keinen Sinn 
denn einer der sich dafür interessiert und sich auskennt um das in der 
JS Datei zu finden, der sieht auch welche Daten du von dort nachlädtst 
und kann das ebenfalls tun.

> JS an sich bietet ja keine echte Möglichkeit Parameter versteckt zu
> handhaben (ausser vielleicht als Hash).
Wie übergibst du denn per GET in der URL?

Sascha

von Jörg (Gast)


Lesenswert?

also gerade ist das Konzept folgendermaßen:
- das Programm steuert auf dem ESP8266 einen LED Matrix (MAX7219), den 
anzuzeigenden Text bekomme ich aus dem MQTT Broker. Hier greife ich 
nicht zu sprich läuft alles "im" ESP
- das HTML Programm läuft aus dem Speicher auf dem ESP (-> SPIFF) und 
stellt die das Benutzerinterface dar. Eingaben werden per JS aufbereitet 
und an den Broker gesandt.
- einen unmittelbare Kommunikation ESP (C-Programm) <-> HTML/JS gibt es 
nicht ergo kein GET/POST
- im JS Code sind die Parameter für den MQTT Zugriff noch in Klartext 
vorhanden, deshalb meine Fragestellung

Hoffe das hilft zum Verständnis

Jörg

von Jörg (Gast)


Angehängte Dateien:

Lesenswert?

kreativ in Blöcken dargestellt sieht es wie beigefügt aus

von Jan H. (j_hansen)


Lesenswert?

Falls es nur darum geht, die Parameter aus der URL zu bekommen: POST. 
Der Browser gehört aber deinem Anwender, der kann mit Lust und Laune 
alles auslesen. Falls das kritisch ist musst du dir etwas anderes 
einfallen lassen, z.B. Berechtigungsprüfung am Server.

von Joachim (Gast)


Lesenswert?

Habe ich das so richtig verstanden?
1. Die LED-Matrix wird vom ESP8266 angesteuert.
2. Die Daten bzw. der Text, der angezeigt werden soll, soll die 
LED-Matrix bzw. der ESP8266 von einem MQTT-Broker bekommen.
3. Auf dem ESP8266 läuft weiterhin ein Webserver, von den man eine 
Benutzeroberfläche für das Ganze abrufen kann, also z.B. um einen neuen 
Text einzustellen.
4. Diese webbasierte Benutzeroberfläche funktioniert folgendermassen: 
Der Webbrowser der Benutzers, der diese Webseite vom ESP8266 abgerufen 
hat, baut eine Verbindung zum MQTT-Broker auf, über den die LED-Matrix 
gesteuert wird. Da der MQTT-Broker abgesichert ist, werden die nötigen 
Informationen (IP-Adresse des MQTT-Brokers, Benutzername und Passwort 
zum Zugriff auf den Broker) an den Benutzer bzw. dessen Webbrowser 
übertragen.
5. Genau das gefällt Dir nicht - es soll den Benutzern der 
Benutzeroberflächen-Webseite zwar möglich sein, die LED-Matrix zu 
steuern, sie sollen aber nicht (durch Analyse des 
HTML-/Javascript-Quellcodes) an die Zugangsdaten des MQTT-Brokers 
gelangen können.

Falls ich das richtig verstanden habe, bleibt Dir imho nur eine 
Möglichkeit:
Dass Du das Verfahren dahingehend änderst, dass der Webbrowser der 
Benutzer eben nicht direkt mit dem MQTT-Broker kommuniziert/keine 
Verbindung zu diesem aufbaut.
Die einfachste Möglichkeit dazu wäre wohl, dass der Webbrowser seine 
Daten eben doch per GET/POST an den ESP8266 schickt, und dieser dann die 
per GET/POST empfangenen Daten an den MQTT-Broker weiterleitet.

von Sascha W. (sascha-w)


Lesenswert?

Jörg schrieb:
> kreativ in Blöcken dargestellt sieht es wie beigefügt aus
Zu welchem Zweck kommuniziert der Browser mit dem Broker wenn es sich 
nur um ein Benutzerinterface für der ESP handelt?

Sascha

von Stefan F. (Gast)


Lesenswert?

Dein Lösungsansatz beinhaltet "Security by Obscurity". Solange es IT 
gibt, was das noch nie eine gute Idee.

Dein Programm würde keinen ernsthaften Security Audit überlegen. Da 
kannst du es besser gleich bleiben lassen und lieber auf Transparenz 
setzen.

von Jörg (Gast)


Lesenswert?

Sascha W. schrieb:
> Zu welchem Zweck kommuniziert der Browser mit dem Broker wenn es sich
> nur um ein Benutzerinterface für der ESP handelt?

Ich gestehe, dass mein Ansatz nicht der beste ist und "historisch" 
gewachsen; JS schien mir in der Anwendung als elegante Lösung.  Werde 
wohl mein Konzept überarbeiten und mit GET/POST arbeiten.

Stefan ⛄ F. schrieb:
> Dein Programm würde keinen ernsthaften Security Audit überlegen

Jep, stimme zu, war aber auch nie meine Absicht

Danke für Eure Hinweise und Tipps

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.