2015-07-10 10 views
5

Sono un principiante con Electron, ho una buona esperienza con lo sviluppo di applicazioni HTML/javascript e finestre desktop (win-forms e WPF). Ho amato js/HTML5 così tanto che vorrei che qualcuno potesse venire un giorno con un framework in cui posso scrivere js/HTML5 per creare applicazioni desktop. E ora Electron è qui.L'applicazione fatta in Electron Framework non è sicura?

Da quello che ho letto, Atom è un fantastico prodotto realizzato con Electron Framework. L'ho sentito bene perché è HACKABLE. OK! nessun problema! Significa che un'applicazione desktop realizzata con il framework Electron non è sicura, chiunque può decodificarla e usarla contro l'utente della mia applicazione.

Chiedo questo perché sto per iniziare a sviluppare un'applicazione desktop e considerando Electron la possibilità di svilupparsi in.

Inoltre, l'imballaggio della applicazione verrà eseguita in tutte e tre le piattaforme? iOS, Win e Linux? So che devo occuparmi dei moduli che ho importato che possono essere specifici della piattaforma (per esempio 'auto-updater')

risposta

12

Un'app Electron non è meno sicura di qualsiasi altra applicazione ospitata sul computer di una persona. Se un individuo malvagio ottiene l'accesso al tuo computer, non importa se la tua applicazione è in Electron, WPF o qualsiasi altra tecnologia. Possono trovare un modo per utilizzare l'applicazione contro l'utente. Inoltre, la maggior parte del codice può essere decodificata e sfruttate le vulnerabilità. Non penso che tu debba preoccuparti di questo. Se fossero aziende insicure come GitHub (che lo fa), Microsoft e Slack lo eviterebbero.

Detto questo, se si desidera tentare di nascondere le informazioni dall'utente Il codice sorgente di Electron è un po 'più semplice da visualizzare in quanto non è in formato binario. È possibile, ad esempio, accedere alla cartella dell'app per Visual Studio Code che è costruita su Electron e visualizzare/manipolare il codice sorgente. Non sono sicuro che la licenza lo permetta, ma puoi farlo. Ci sono modi in cui puoi mitigarlo. Puoi offuscare il codice JavaScript e inserirlo in un ASAR, tra le altre cose.

Non sono sicuro di aver compreso completamente la tua domanda finale. Electron funziona davvero su Windows, Mac (OSX non iOS) e Linux. Un pacchetto può essere scaricato ed eseguito su tutti e tre assumendo che si disponga dei moduli corretti. Per quanto riguarda l'installazione, Squirrel sembra essere una scelta popolare. Avrai bisogno di massaggiare le cose per ogni piattaforma. Scopri come Visual Studio Code lo fa per ogni piattaforma e ti consiglierei di seguirne l'esempio.

+0

Oh giusto OSX non iOS.Grazie mille per tutte le informazioni che hai fornito. – Savaratkar

+0

risposta è accettata :) – Savaratkar

2

Suggerisco che se l'applicazione è sensibile alle informazioni o un'applicazione enterprise, farlo in un altro quadro "tradizionale". In Electron è possibile ottenere il codice sorgente, modificarlo e persino riconfezionarlo con il minimo sforzo dato che i file JS normali sono disponibili per chiunque abbia l'app. So che la maggior parte della gente dice "puoi offuscarla", ma ci sono molti strumenti online per "abbellire" il codice e recuperare qualcosa di molto identico. Inoltre alcuni degli "obfuscators" riescono effettivamente a violare il codice.

2

La sicurezza è una cosa relativa. Niente è completamente sicuro. L'idea di sicurezza è quella di rendere abbastanza difficile sfondare la tua sicurezza che, si spera, non valga il tempo e gli sforzi necessari. Ciò dipende dalla motivazione della persona malintenzionata che di solito dipende dal tipo di informazioni elaborate o archiviate o dai servizi che vengono eseguiti. Puoi paragonarlo a mettere un lucchetto sulla tua porta di casa. La maggior parte delle serrature non sono molto sicure in quanto qualcuno addestrato a sceglierle/bypassarle in genere può farlo molto facilmente. Ma impediscono alla persona media di scegliere di aprire la porta solo per tentazione casuale o curiosità.

Se la natura dell'applicazione che si sta facendo è che deve essere il più sicuro possibile, allora mi sembra che Electron non sia la soluzione migliore. Le persone possono visualizzare il tuo codice direttamente.Anche se è offuscato, questo li lascia ancora con il codice javascript, e come sottolineato da @ Cenebyte321, può essere un po '"abbellito". Sebbene una versione abbellita di codice correttamente offuscato non sarebbe codice pulito o leggibile in termini dei concetti presentati da esso. Non sarebbe nulla vicino all'originale. Altrimenti, potresti semplicemente prendere qualsiasi codice funzionante e renderlo leggibile e ben organizzato semplicemente eseguendo un beautifier su di esso. È bene rendersi conto che tecnicamente è possibile decompilare qualsiasi eseguibile di nuovo al codice sorgente. Anche un programma binario scritto in C può essere trasformato in codice C. In quel caso, il codice "offuscato" prodotto sarebbe probabilmente ancora più oscuro, quindi c'è un qualche vantaggio in questo. Ma ancora, può essere decompilato e dovrebbe essere un codice C valido.

Una volta che il codice dannoso si trova su un sistema, è molto difficile proteggerlo. La cosa più importante è assicurarsi che tutti i server con cui l'app sta comunicando siano sicuri (di nuovo, in senso relativo) e che l'API per loro sia sicura. Dovrebbe essere abbastanza sicuro che se qualcuno guarda il codice sorgente della tua app e capisce come funziona l'API del tuo server, non è un problema per te. Qualsiasi comunicazione sensibile a un server dovrebbe essere crittografata. Non vuoi che il nome utente e la password dell'amministratore siano nel codice sorgente. Ma non lo vuoi con nessuna app scritta in nessuna lingua. Idealmente, tutte le password salvate sul computer dell'utente dovrebbero essere trasformate in qualche modo prima di essere salvate (possibilmente salate in più modi e hash, o qualsiasi altra cosa facciano i bambini fantastici in questi giorni) in modo che se qualcuno ottiene l'accesso a tali dati , vedono solo una versione modificata di esso. Quando questo viene fatto correttamente, non ci dovrebbe essere un modo per decrittografare le password, sebbene ci siano tecniche che le persone possono usare per provare a produrre una password che risulterà nello stesso hash. Dovresti solo confrontare la versione modificata di una password normalmente inserita con la versione modificata salvata della password attuale. I principi per archiviare le password in modo sicuro e avere API e comunicazioni sicure su un server non sono specifici di Electron, qualsiasi linguaggio o framework che si utilizzi richiederà la stessa attenta riflessione sulla sicurezza.

Nel caso in cui le mie parole fossero fuorvianti, non intendevo che sarebbe prassi normale archiviare localmente le password utilizzate per accedere al server. Idealmente, l'utente dovrebbe digitare password di quella natura per ciascuna sessione e non verrebbe mai memorizzato localmente. Ma per comodità molte app ti permettono di memorizzare localmente una password, in modo da non doverla digitare ogni volta. In realtà, dipende da quanto sono sensibili i dati cui si accede da tali password e da quanto sia importante la convenienza per gli utenti.

Tuttavia, se il software dannoso è in esecuzione sui computer degli utenti, è probabile che sia possibile registrare le sequenze di tasti in qualsiasi modo e distinguere nomi utente e password in questo modo. Persino le comunicazioni crittografate non sono infallibili, poiché alla fine vengono scoperti dei buchi di sicurezza e vengono sviluppati nuovi protocolli. A volte i governi o altre persone sanno di backdoor che sono stati progettati intenzionalmente in un tipo di crittografia. Spero solo che nessun altro abbia ancora trovato quelle backdoor, dato che sono essenzialmente dei difetti di sicurezza progettati intenzionalmente nei protocolli di crittografia. Poiché gli strumenti javascript diventano più avanzati, è possibile che il codice javascript offuscato possa essere quasi oscuro e confuso come codice C offuscato o forse ci sono già strumenti che lo fanno.

+0

In realtà l'idea di sicurezza è rendere le cose veramente sicure. La sicurezza dall'oscurità non è vera sicurezza. –

+0

@ TomášZato Questo era il punto che stavo facendo nel paragrafo 3. Ma anche, il mondo non è in bianco e nero. Qualsiasi sicurezza può essere aggirata con abbastanza tempo e abilità. Ma hai un buon punto che c'è un livello minimo di sicurezza che ogni app dovrebbe avere, e l'offuscamento non fa parte del determinare se lo hai raggiunto. Se l'offuscamento è stato usato come parte di una strategia di sicurezza, non dovrebbe essere invocato in alcun modo. Dovrebbe essere usato solo un ulteriore livello di deterrenza oltre le parti più fondamentali della tua strategia di sicurezza, che forse non ho spiegato molto bene nella mia risposta. –

+0

Penso di aver sbagliato nella mia risposta. Lo esaminerò più a fondo e lo riscriverò se necessario. È possibile che mi riferissi alle password memorizzate localmente per i servizi esterni come cose che dovrebbero essere archiviate localmente in modo tale da non poter essere decifrate. Se non è decifrabile, non c'è modo di sapere quale password inviare al servizio esterno. –

0

Sì, l'applicazione desktop fuori campo costruita con l'elettrone è meno sicura a meno che alcuni ragazzi come me si concedano il debugging. Recentemente yahoo messenger aggiornato alla nuova versione con è un atomo di elettroni costruito. E ricompilato e cambiato le icone. yahoo messenger ricompilati per le mie icone desiderate:

enter image description here

confronto di yahoo nuovo e ricompilato:

enter image description here

Problemi correlati