JSON Aufruf über Webfront

Hallo,
ich würde gerne bestimmte Aktionen aus einer HTML Box auslösen. Jetzt gibt es Beispiele, bei denen ich „per Hand“ eine API Verbindung aufbauen muss. Leider muss ich dabei die Credentials mitgeben, und diese sind dann im Klartext im Webfront Quellcode einsehbar. Das ist eine nicht zumutbare Sicherheitslücke. Es geht im Endausbau um ca 25 Webfronts für über 40 Nutzer.

Daher würde ich gerne die im Webfront eingebaute Authentifizierung verwenden und würde mich etwas wünschen wie z.B.

<div class="MyButton" onclick="WF_RequestAction(12345,true)">Klick Mich</div>

Gerne unter Restriktion, dass die Variable an anderer Stelle (versteckt) vorhanden sein muss, weil das System sonst den Zugriff im Hintergrund blockert.

Ebenso wäre es cool, ich könnte so den Zugriff auf Scripte/Hooks entsprechend setzen.

<div class="MyScript" onclick="WF_StartScript(12346,"Parameter")">Klick Mich</div>

oder

<div class="MyScript" onclick="WF_StartHook(12347,"Parameter")">Klick Mich</div>

Das alles jeweils unter Berücksichtigung/Mitteilung im Script, dass diese Aktion durch ein berechtigtes Webfront ausgeführt wurde.

Hat jemand ausfindig machen können, wie ich ggf. für Teile die im Webfront schon eingebauten Aktionen verwenden kann? Oder sieht das Symcon Team eine Möglichkeit, dass von sich aus anzubieten.

IPS-Studio ist für meine 1. konkreten Anwendungsfälle (Playlist anzeige und auswählen) keine Option.

Ich habe in der Zwischenzeit etwas gesucht und auch in einigen Modulen (z.B. das Kodi Modul) gesehen, dass hier aufwändig eigene Javascript Befehle für den Webhook Aufruf geschrieben wurden. Dort allerdings ohne jede Authentifizierung.

Gruß
Tobias

Noch mal hinschauen, bevor du so etwas behauptest:
Version 2.90:
Neu: Alle Webhooks der HTML-Tabellen werden mit einem Hash abgesichert

Michael

Hallo Michael,

ich wollte hier keineswegs böse Behauptungen ggü. deinem Modul verbreiten.

Ich hatte konkret mal in die KodiDeviceInput/generateRemote1.php gesehen und dort unter

HTTP.open("GET","hook/KodiRemote' . $this->InstanceID . '?button=" + url,true);

jetzt keinen speziellen Hinweis auf einen Hash gefunden. Vielleicht magst du (oder hast sogar schon) mal erläutern, wie du das konkret umsetzt.

Das Grundproblem bleibt aber, ich muss mich selber darum kümmern.

Wie geschrieben HTML Tabellen; das ist keine.
Die remotes sind noch auf der To-Do.
Im Endeffekt merke ich mir intern, wenn die Tabelle gebaut wird, einen zufälligen 12 Byte String als Secret.
Dazu kommt dann ein Wert, zum Beispiel die Zeile, und das wird als Hash in der URL eingebaut.
Beim verarbeiten des hook wird der Hash ebenfalls berechnet und mit dem übertragen vergleichen.
Ist natürlich nur rudimentär, weil das Secret sich nur ändert, wenn die Tabelle neu gebaut wird.

Michael

Wir haben dort bisher nichts geplant. Da du ja scheinbar ein „größeres“ Projekt hast, lohnt es sich evtl. dass wir dir dort etwas passendes bauen. Schreib uns doch mal direkt übers Kontaktformular, was du brauchst - dann können wir dir ein Angebot machen :slight_smile:

paresy

Hallo,
so groß ist mein Projekt gar nicht. Es kann sogar sein, dass es tatsächlich kleiner ist als viele der privat Smarthomes. Das Problem ist einfach, dass ich sauber zwischen den Nutzern unterscheiden muss. Und da einige Nutzer technisch sehr versiert sind, besteht die Gefahr des Herumprobierens und finden von potenziellen Sicherheitslücken um so mehr.

Für den Fall, der mich hier zum konkreten Fragen ermuntert hat, ist es sicherlich noch nicht sinnvoll eine Auftragsentwicklung zu starten. Entweder ich gehe das Sicherheitsrisiko (beim Musikplayer vertretbar) ein, oder ich biete halt garkeinen Musikplayer an.

Nur da ja offensichtlich auch in anderen Modulen Bedarf besteht, hoffe ich einfach mal weiter, dass ihr dort irgendwann etwas anbietet.

Gruß
Tobias