Sagt mal, gibt es einen eleganten, einfachen und vor allem kostenlosen Weg, ein Javascript bzw. enthaltene Daten vor Fremden zu schützen? Problem ist, die Daten stehen da ja quasi als Reintext drinnen und können schlicht binnen Sekunden kopiert werden. Finde ich weniger schön. Mir geht es nicht um das ganze Javascript, nur um Daten, die es für die Verarbeitung braucht.
In dem Fall speziell Koordinaten für Google Maps bzw. Leaflet. Über die Koordinaten werden Polygone generiert, aber auch einfach Standorte auf der Karte gezeigt, z.B. "Hundestrände an der Nordsee". Da steckt jeweils verdammt viel Arbeit drinnen, vor allem in den Polygonen. Das können schon mal an die 500 Datenpunkte sein, für eine einzige Region in Deutschland und bekanntlich gibt es da sehr viele.
Im Grunde erzeugt das quasi solche Karten:
Das ist nun eine Übersicht aller erfassten Regionen. In der Nutzung sind die jeweils alleine. Die Daten für die Polygone müssen aber halt ins Javascript und stehen mehr oder weniger so im Quelltext (Beispiel für die Schwäbische Alb):
Wie man sich nun denken kann, das ist ein Kinderspiel, sich die Koordinaten zu kopieren.
Wie kann ich die nun schützen? Hat da einer eine Idee? Mir ist klar, irgendwo müssen die Daten wieder "normal" werden, sondern kann Leaflet die nicht anzeigen. In der Datenbank selbst stehen sie als Binärdaten für Geo-Objekte. Abgerufen werden sie als GeoJson und übergeben. Leaflet verarbeitet die dann zu SVG weiter und zeigt sie an. GeoJson muss es aber zu Beginn bleiben und am Ende, also bevor Leaflet das verarbeitet, muss es auch wieder GeoJson sein.
Aber der Weg dazwischen ist eigentlich völlig offen und im Prinzip auch genau die Stelle, wo einfach kopiert werden kann.
Aktuell fange ich schon an, das Array nach einem bestimmten Muster vor der Übermittlung zu verändern, z.B. jede zweite Koordinate mit der vorherigen vertauschen. Das ganze dann kurz vor der Anzeige wieder zurückrechnen. Das geht, einfach so kopieren ist auch nicht mehr, kommt dann nur Mist bei raus, aber es ist sehr rechenintensiv. Da muss das GeoJson, das ja schon fertig ist, erst wieder in ein normales Json umgewandelt werden, dann zerpflückt werden, dass man nur die "Coordinates" hat, das Array dann durchlaufen werden und die Koordinaten getauscht. Später dann, vor der eigentlichen Nutzung das ganze Prozedere per Javascript wieder rückwärts. Und wenn man nicht ganz doof ist, dann sieht man auch die Funktion, die den "Koordinaten-Swap" ausführt.
Nur welche Möglichkeiten gibt es noch? Habe da durchaus zwei Tools gefunden, die verschlüsseln mit verschiedenen Routinen. Aber das ist irgendwie auch Quatsch, denn der Key zur Entschlüsselung muss im Javascript mit hinterlegt sein, in Klartext. Zudem sind das Eigenentwicklungen von Leuten und keine offiziellen Module oder Klassen. Dann hatte ich schon versucht, die Koordinaten zu komprimieren, mit zip, bz2 oder sonst was, aber da scheint es kein Gegenstück in Javascript zu geben, jedenfalls nichts Offizielles, das auch überall funktioniert.
Einer hat wohl dafür eine Lösung, aber das ist dann Overkill. Der erzeugt aus solchen Daten Bilder mit farbigen Punkten. Also z.B. ein Bild mit 100x100 Pixel und jedes Pixel hat 12 verschiedene Farbmöglichkeiten, 10 für die Ziffern 0 bis 9 und zwei für die Zeichen "Punkt und Komma". Ok, damit kann man nix anfangen, aber der muss das auch wieder Pixel für Pixel zurückrechnen und sich dabei auf die Farberkennung des verwendeten Browsers verlassen. Sehr fehleranfällig und noch rechenlastiger also.
Hat einer eine Idee, wie man solche Datenbestände in Javascript schützen kann?