2013-01-02 6 views
6

Ho imparato un po 'di webGL, usando principalmente three.js. Carico file .obj e li disegno in 3D.È possibile nascondere/proteggere i dati utilizzati in webGL?

Ho posto il mio progetto online in qualcosa di simile a: www.mydomain.com

non mi dispiace la gente a guardare il mio codice sorgente attraverso il proprio sito, ma i file obj che sto mostrando sono da qualcuno chi non vuole darli via.

Sono un novizio totale a riguardo.

Dato che il mio codice sorgente è disponibile per tutti, suppongo che i file .obj siano disponibili anche per tutti. Quindi è possibile nasconderlo o proteggerli in modo che nessuno possa scaricarli?

+3

No, perché quando si ottengono questi file per disegnarli sono già stati scaricati sul computer client ... – 11684

+1

L'unica possibilità è probabilmente l'offuscamento eccetera. – 11684

risposta

7

Sono sicuro che non è possibile proteggere alcun file se si desidera accedervi e utilizzarli in Javascript/WebGL. Devono essere analizzati in un formato utilizzabile a un certo punto per consentire al browser/javascript di visualizzarli. Sono disponibili due opzioni:

1) Offuscamento. Non penso che questa sia una buona opzione, dato che alla fine qualcuno può sempre usare Firebug e altri strumenti per accedere a una rappresentazione piuttosto utile dei tuoi file. Puoi renderlo un po 'meno facile da crittografare o scrambling dati lato server e ricostruire roba in Javascript. O semplicemente usando metodi non convenzionali per caricare e rappresentare i file.

È inoltre possibile eseguire alcune decodifiche/decodifiche nel codice dello shader che sarebbe un passo più difficile da sottrarre. Ma probabilmente si applica solo alle texture.

2) Rendere i file meno utili. Perché qualcuno possa riutilizzare i file OBJ, probabilmente vogliono importare i modelli in software di loro scelta e fare qualcosa. Non è possibile impedirlo, ma è possibile rimuovere i file dalle informazioni aggiuntive che semplificano l'utilizzo dei file. Ciò renderà i file meno desiderabili per eventuali ladri potenziali.

Lo faccio per motivi completamente diversi, ma il mio uso principale di WebGL riguarda l'esportazione di modelli da Sketchup a Collada e la loro visualizzazione in WebGL. Il mio codice di esportazione fa alcune cose, che come effetto collaterale rendono il modello esportato un problema con cui lavorare. Ciò include rendere tutte le istanze dei componenti univoche (deistanza?), Esplodere tutti i componenti e gruppi in geometria semplice, triangolare tutti i volti, eliminare la geometria nascosta ecc.

Sarebbe un PITA per riportarlo in Sketchup per la modifica senza il file originale ... specialmente perché i modelli con cui lavoro, per natura dipendono pesantemente dal componente e dall'istanza del gruppo. Ma ancora, nulla impedisce a qualcuno di rubare la geometria "così com'è".

2

Se qualcuno è scaricabile nel browser, si trova sul computer dell'utente.

È possibile rendere più difficile la lettura dei file, ma rallenterà solo l'acquisizione dei dati .obj. Se qualcuno vuole farlo, alla fine può farlo. La chiave di decrittografia deve essere sempre sul computer client. Quindi puoi solo rallentare il processo. Quindi la domanda diventa "Quanto è difficile e quanto complesso vuoi rendere il tuo codice di lettura .obj e vale lo sforzo?" Semplicemente aggiungendo un byte in più all'inizio del file è probabilmente sufficiente fare in modo che i file non si aprano come nel software di modellazione.

Ti suggerisco di educare il tuo interlocutore su come funziona Internet e di dire semplicemente che non è possibile o vale la pena tentare di farlo e salvarti dalle implementazioni homebrew come rendere la lettura dei dati più difficile.

2

Vedere le altre risposte, ma questo non è univoco di WebGL. QUALSIASI programma in QUALSIASI lingua ha questo problema. Una volta che i dati sono sul computer dell'utente, il telefono, ecc. Le persone possono ottenere i dati. Esempi:

  1. reading an iOS app's data
  2. reading a native PC app's data

D'altra parte è possibile seguire le tecniche di cui sopra. Usa il tuo formato. Massaggi i dati, quindi è meglio per il rendering che di solito non funziona correttamente.

Inoltre, è anche possibile rendere i propri file che richiedono a qualcuno di accedere al proprio sito Web per leggerli in primo luogo in modo simile a come Gmail, Facebook, Google Documenti, ecc. Richiedono l'accesso. Ciò non impedirà loro di ottenere i file una volta che si sono registrati ma. You can also setup your server so only your app can download the files. Ancora una volta ciò non impedirà all'utente di ottenere i file una volta che l'app li ha scaricati (o ha iniettato JavaScript tramite un'estensione del browser), ma impedirà il furto della larghezza di banda da altri siti che collegano direttamente i tuoi dati.