Cum protejez continutul

Din capul locului spun că sunt absolut novice în treaba asta.

Vreu să creez, cu ajutorul lui Django, un site web al cărui scop principal va fi afișarea hărților. Doar că aceste hărți sunt create la comandă per client. Fiecare client intră pe site, își face cont și primește permisiuni de a vizualiza anumite hărți.

Hărțile vor fi servite de pe un server special, unde am instalat un pachet numit GeoServer. Acest geoserver primeste date geografice si publică astfel de hărți .

In pagina mea django am de gând să folosesc o librărie javascript, Leaflet, pentru a afișa aceste hărți:

var map = L.map(mapDiv, mapOptions);

var wmsLayer = L.tileLayer.wms('http://link.harta-geo-server.org/exemplu/wms?', wmsOptions).addTo(map);

Sunt curios dacă pot face ca un client care a primit acces către o hartă să nu o poată distribui? Nu aș vrea ca el să dea un view-source/inspect-element pe pagină, să extragă link-ul din codul javascript și să îl folosească după bunul plac.

Nu stiu exact ce ar trebuie sa invat sa fac. Am nevoie de ceva termeni de specialitate (de documentat/ căutat pe google), indrumare, idei. Cum îi inpun clientului să vadă hărțile doar în pagina django, după logare.

1 Like

Nu poți.

Tot ce este generat de server ajunge în browser și, de aici, poți face orice. Poți extrage din cache, poți folosi un proxy șamd.

Poți face un pic mai dificilă operația asta, dar cineva determinat poate extrage orice.

3 Likes

Drop the browser use native mobile/tablet apps only.

1 Like

Ar fi ok o soluție nativă, poate aș scăpa cu Cordova sa împachetez soluția web într-o aplicație.

Posibil mi-ar fi mai ușor o dezvoltare web iar clientul țință va folosi un pc pentru a vizualiza harta pe un ecran mare.

Dar dacă protecția datelor are importanță mare (și este o cerință cheie a proiectului) atunci am să am în vedere și aplicațiile native.

Este posibil. Criptezi datele, obfuschezi codul js care despacheteaza în memorie jsonul pe segmente de viewport pe un canvas pe care pui doar o imagine generată cu watermarking aproape invizibil.

Există obfuscare destul de bună, e mai greu de deobfuscat față de decompilat.
În rest dacă se vede imaginea unei hărți oricum cineva care a făcut o hartă în viață o poate copia.

Poți face o aplicație cu electron să fie și mai greu de făcut debugging. Eu din câte înțeleg vrei doar să nu poată fi copiat automat, că manual se poate copia orice.

Daca te referi la harta ca imagine, poti sa faci screenshot la orice. Daca te referi la harta ca si slices of blocks in cadrul Leaflet, atunci se pot face metode de criptare si decriptare, dar sunt destul de costisitoare pt. browsers, in special daca hartile sunt mari.

1 Like

Inainte sa treci la soluti hi-tech, cred ca e deajuns ca link-ul respectiv sa fie acccesibil doar clientilor logati, si sa forteti Referer-ul sa fie domeniul aplicatiei.
A doua limitare e deajunsa pentru a opri sharing prin browsere in principiu, lansand cale libera spre acces programatic insa.
Prima limitare e fix aceiasi nivel de securitate pe care-l ai cu Gmail/Facebook etc. Atata timp cat un client nu e confortabil sa-i dea altuia userul/parola/contul de facebook, n-o sa ai nici access la resursa aia decat de la utilizatorii care trebuie.

Presupun ca clientii astia sunt oameni normali, nu NSA sau CCC, asa ca n-ai de ce sa te duci in solutii complicate si/sau sa faci retooling spre native/electron etc. doar din cauza asta.

Si cum spune @navaru, screen-shot poate face oricine.

2 Likes

Nu știu cum e pe android, dar o aplicație ios se poate dezarhiva pur și simplu cu unzip app.ipw (sau ce extensie au aplicațiile ios)

Cred ca este evident ca nu ai cum sa o protejezi complet - efortul de a o replica pe o platforma nativa mobila este mult mai mare, atat financiar cat si la nivel de expertiza. De asta am si sugerat varianta nativa, evident depinde de use case - desi hartile, UI-wise + GPS functioneaza mai bine pe o tableta in format nativ decat intr-un browser.

Bine in final cred ca este a moot point daca doar hartile in sine sunt partea critica si nu toata aplicatia.