[vz-dev] jsonp support für vz

Jakob Hirsch jh at plonk.de
Thu Apr 4 14:52:35 CEST 2013


Hi,

Andreas Goetz, 03.04.2013 08:46:
>>> ich hatte den Wunsch, remote (d.h. per iphone-app) auf die mw
>>> zuzugreifen. Aus Sicherheitsgründen ist das nur per JsonP, nicht jedoch
>>> json möglich.
>> interessante sache irgendwie...
>> es ist doch eigentlich im frontend vorgesehen, kanaele von verschiedenen
>> middlewares abbonieren zu koennen - funktionierte das bisher garnicht?!
> Kann nicht. Allerdings habe ich auch keinen Platz in rigendeiner Config
> gefunden wo ich eine zweite MW hätte eintragen können- für's durch JS
> hacken fehlte mir bisher die Zeit. Wäre aber eine spannende Aufgabe auch
> daran ein wenig zu basteln.

Das ist jetzt auch schon möglich. Kann man einfach selbst testen, indem
man in seinem Frontend einen der öffentlichen Kanäle von
demo.volkszaehler.org abonniert.

>     https://github.com/volkszaehler/volkszaehler.org/pull/44

Ich paste einfach mal meinen Kommentar von dort:

JSONP wird bereits über den Parameter "padding" unterstützt, siehe
http://wiki.volkszaehler.org/development/api/reference?s[]=padding#json
Dieser wird auch schon vom frontend benutzt, wenn man eine andere als
die lokale middleware ausgewählt hat.

Allerdings belässt padding den Content-type auf application/json, das
sollte wohl wie bei dir application/javascript sein, das sollten wir
noch fixen.

> In der jetzigen Version ist das allerdings ein potentielles
> Sicherhitsrisiko- es lassen sich ja nicht nur Daten abfragen sondern
> auch löschen. Was fehlt ist m.E. eine Konfigurationsoption mit der jsonp
> standardmäßig erstmal deaktiviert ist.

Warum sollte JSONP für die middleware ein Sicherheitsrisiko sein? Wenn
man die UUID kennt und die middleware erreichen kann, kann man das auch
so über die API machen.

Was ich an JSONP skurril finde (zumindest soweit ich das verstanden
habe): Wegen der same-origin-policy kann man nicht einfach JSON
benutzen. Um das zu umgehen, lädt man sich javascript-code von einem
fremden Server!?! Ich habe zumindest nirgendwo gesehen, daß geprüft
wird, ob der Server tatsächlich sowas wie "callback_methode({daten...})"
zurückgibt, oder nicht beliebigen anderen javascript-code, der z.B. die
cookies ausliest und für alle Kanäle ein delete macht.




More information about the volkszaehler-dev mailing list