2015-07-10 13 views
5

Ich bin ein Anfänger mit Electron, ich habe gute Erfahrung mit HTML/Javascript und Fenster Desktop-Anwendung Entwicklung (Win-Formulare und WPF). Ich liebte js/HTML5 so sehr, dass ich wünschte, jemand könnte eines Tages mit einem Framework auftauchen, wo ich js/HTML5 schreiben kann, um Desktop-Anwendungen zu erstellen. Und jetzt ist Electron hier.Anwendung in Electron Framework ist unsicher?

Von dem, was ich gelesen habe, ist Atom ein ehrfürchtiges Produkt hergestellt Electron Framework. Ich habe es gut gehört, weil es HACKABLE ist. OK! kein Problem! Bedeutet dies, dass eine Desktop-Anwendung, die mit dem Electron-Framework erstellt wurde, unsicher ist, kann jeder sie entschlüsseln und gegen den Benutzer meiner Anwendung verwenden.

Ich frage das, weil die Entwicklung einer Desktop-Anwendung starten werde und Electron eine Option unter Berücksichtigung in.

Auch Verpackung der Anwendung zu entwickeln, wird in allen drei Plattformen laufen? iOS, Win und Linux? Ich weiß, dass ich mich um die Module kümmern muss, die ich importiere, die plattformspezifisch sein können (zum Beispiel "Auto-Updater")

Antwort

12

Eine Electron App ist nicht weniger sicher als jede andere Anwendung auf dem Computer einer Person gehostet. Wenn eine ruchlose Person Zugang zu Ihrem Computer erhält, spielt es keine Rolle, ob Ihre Anwendung in Electron, WPF oder einer anderen Technologie ist. Sie können einen Weg finden, die Anwendung gegen den Benutzer zu verwenden. Darüber hinaus kann der meiste Code reverse engineered und Schwachstellen ausgenutzt werden. Ich glaube nicht, dass du dir darüber Gedanken machen musst. Wenn es diese unsicheren Firmen wie GitHub (wer macht es), Microsoft und Slack würde es vermeiden.

aber sagen, dass, wenn Sie Informationen vom Benutzer Electron Quellcode zu verstecken, um versuchen wollen, ist ein wenig leichter zu sehen, da es nicht in binärer Form ist. Sie können beispielsweise in den App-Ordner für Visual Studio Code gehen, der auf Electron basiert und den Quellcode anzeigen/manipulieren. Ich bin mir nicht sicher, ob die Lizenz es erlaubt, aber Sie können es tun. Es gibt Möglichkeiten, wie Sie dies mildern können. Sie können das JavaScript verschleiern und es unter anderem in einen ASAR legen.

Ich bin nicht sicher, ob ich voll und ganz Ihre letzte Frage verstehen. Elektron läuft tatsächlich unter Windows, Mac (OSX nicht iOS) und Linux. Ein Paket kann heruntergeladen und auf allen dreien ausgeführt werden, vorausgesetzt, Sie haben die richtigen Module. Bezüglich der Installation scheint Squirrel eine beliebte Wahl zu sein. Du wirst die Dinge für jede Plattform massieren müssen. Sehen Sie sich an, wie Visual Studio Code es für jede Plattform macht, und ich würde Ihnen empfehlen, nachzufolgen.

+0

oh rechts OSX nicht iOS.Vielen Dank für die Informationen, die Sie zur Verfügung gestellt haben. – Savaratkar

+0

Antwort wird akzeptiert :) – Savaratkar

2

Ich schlage vor, dass, wenn die Anwendung Informationen empfindliche oder eine Enterprise-Anwendung tut es in einem anderen „traditionellen“ Rahmen. In Electron kann man den Quellcode bekommen, modifizieren und sogar mit minimalem Aufwand neu packen, da die JS-Dateien für jeden mit der App verfügbar sind. Ich weiß, dass die meisten Leute sagen "Du kannst es verschleiern", aber es gibt viele Online-Tools, um den Code zu "verschönern" und etwas sehr Identisches zurückzubekommen. Auch einige der "Obfuscators" schaffen es, den Code zu brechen.

2

Sicherheit ist eine relative Sache. Nichts ist völlig sicher. Die Idee mit Sicherheit besteht darin, es schwierig genug zu machen, um Ihre Sicherheit zu durchbrechen, dass es hoffentlich nicht die Zeit und Mühe wert ist, die es dauern würde. Dies hängt davon ab, wie motiviert die böswillige Person ist, die in der Regel von der Art der Informationen abhängt, die verarbeitet oder gespeichert werden, oder von den ausgeführten Diensten. Sie können es mit einem Schloss an der Haustür vergleichen. Die meisten Sperren sind nicht sehr sicher, da jemand, der trainiert wurde, um sie aufzunehmen/zu umgehen, dies typischerweise sehr einfach tun kann. Aber sie verhindern, dass die durchschnittliche Person aus zufälliger Versuchung oder Neugier die Tür öffnet.

Wenn die Art der Anwendung, die Sie machen, ist, dass es so sicher wie möglich sein muss, dann scheint es mir Electron nicht die beste Wahl ist. Personen können Ihren Code direkt anzeigen.Selbst wenn es verschleiert ist, bleiben sie mit JavaScript-Code, und wie @ Cenebyte321 darauf hinweist, kann es etwas "verschönert" werden. Obwohl eine verschönerte Version von ordnungsgemäß verschleiertem Code im Hinblick auf die von ihr dargestellten Konzepte nicht sauber oder lesbar wäre. Es wäre nicht annähernd das Original. Andernfalls könnten Sie einfach jeden funktionierenden Code nehmen und ihn lesbar und gut organisiert machen, indem Sie einfach einen Beautifier darauf ausführen. Es ist gut zu wissen, dass Sie technisch jede ausführbare Datei zurück in den Quellcode dekompilieren können. Sogar ein in C geschriebenes Programm kann in C-Code zurückverwandelt werden. In diesem Fall würde der erzeugte "verschleierte" Code wahrscheinlich sogar unklar sein, so dass ein gewisser Vorteil darin besteht. Trotzdem kann es dekompiliert werden und es sollte gültiger C-Code sein.

Sobald bösartiger Code auf einem System ist, ist es sehr schwierig, dagegen zu schützen. Wichtiger ist es, sicherzustellen, dass alle Server, mit denen die App kommuniziert, sicher sind (wiederum im relativen Sinn) und dass die API für sie sicher ist. Es sollte sicher genug sein, dass wenn Sie sich den Quellcode Ihrer App ansehen und herausfinden, wie die API Ihres Servers funktioniert, das kein Problem für Sie ist. Jede sensible Kommunikation mit einem Server sollte verschlüsselt werden. Sie möchten nicht, dass ein Administrator-Benutzername und ein Passwort im Quellcode hängen bleiben. Aber das wollen Sie nicht mit irgendeiner App, die in irgendeiner Sprache geschrieben ist.

Im Idealfall sollten alle auf dem Computer des Benutzers gespeicherten Passwörter in irgendeiner Weise vor dem Speichern transformiert werden (möglicherweise mehrfach gesalzen und gehashed oder was auch immer die coolen Kids heutzutage tun), wenn jemand Zugriff auf diese Daten erhält , sie sehen nur eine modifizierte Version davon. Wenn dies richtig gemacht wird, sollte es keine Möglichkeit geben, die Passwörter zu entschlüsseln, obwohl dort Techniken verwendet werden können, um ein Passwort zu erzeugen, das denselben Hash ergibt. Sie sollten die geänderte Version eines normalerweise eingegebenen Passworts nur mit der gespeicherten geänderten Version des tatsächlichen Passworts vergleichen. Die Prinzipien der sicheren Speicherung von Kennwörtern und sicheren APIs und Kommunikation mit einem Server sind nicht spezifisch für Electron. Jede Sprache oder jedes Framework, das Sie verwenden, erfordert die gleichen sorgfältigen Überlegungen zur Sicherheit.

Nur für den Fall, dass meine Worte irreführend waren, bedeutete ich nicht, dass es üblich wäre, Kennwörter für den Zugriff auf den Server lokal zu speichern. Idealerweise müsste der Benutzer in jeder Sitzung Kennwörter dieser Art eingeben und würde niemals lokal gespeichert werden. Aber aus praktischen Gründen können Sie in vielen Apps ein Passwort lokal speichern, sodass Sie es nicht jedes Mal neu eingeben müssen. Es hängt wirklich davon ab, wie sensibel die Daten sind, auf die diese Kennwörter zugreifen, und wie wichtig die Benutzerfreundlichkeit für sie ist.

Aber wenn bösartige Software auf den Computern Ihres Benutzers ausgeführt wird, könnte es wahrscheinlich ihre Tastatureingaben trotzdem protokollieren und Benutzernamen und Kennwörter auf diese Weise erkennen. Selbst verschlüsselte Kommunikation ist nicht narrensicher, da Sicherheitslücken in ihnen entdeckt werden und neuere Protokolle entwickelt werden. Manchmal wissen Regierungen oder andere Personen über Backdoors Bescheid, die absichtlich zu einer Art von Verschlüsselung entwickelt wurden. Ich hoffe nur, dass noch niemand diese Hintertüren gefunden hat, da es sich im Wesentlichen um Sicherheitsfehler handelt, die absichtlich in die Verschlüsselungsprotokolle eingebaut wurden. Da JavaScript-Tools immer fortschrittlicher werden, ist es möglich, dass verschleierter JavaScript-Code fast so obskur und verwirrend ist wie verschleierter C-Code, oder vielleicht gibt es bereits Tools, die dies erreichen.

+0

Eigentlich ist die Idee mit Sicherheit, Dinge wirklich sicher zu machen. Sicherheit durch Dunkelheit ist keine wahre Sicherheit. –

+0

@ TomášZato Das war der Punkt, den ich in Absatz 3 gemacht habe. Aber auch, die Welt ist nicht schwarz und weiß. Jede Sicherheit kann mit genügend Zeit und Geschick umgangen werden. Aber Sie haben einen guten Punkt, dass es ein Mindestmaß an Sicherheit gibt, die jede App haben sollte, und Verschleierung ist nicht Teil der Bestimmung, ob Sie das erreicht haben. Wenn die Verschleierung als Teil einer Sicherheitsstrategie verwendet wurde, sollte sie in keiner Weise verwendet werden. Es sollte nur eine zusätzliche Abschreckungsschicht sein, die über die grundlegenderen Teile Ihrer Sicherheitsstrategie hinausgeht, die ich vielleicht in meiner Antwort nicht gut erklärt habe. –

+0

Ich glaube, ich habe einen Fehler in meiner Antwort gemacht. Ich werde es genauer durchgehen und es bei Bedarf neu schreiben. Es ist möglich, dass ich lokal gespeicherte Passwörter für externe Dienste als Dinge bezeichnete, die lokal so gespeichert werden sollten, dass sie nicht entschlüsselt werden konnten. Wenn es nicht entschlüsselbar ist, gibt es keine Möglichkeit zu wissen, welches Passwort an den externen Dienst gesendet werden soll. –

0

Ja, Off-Kurs-Desktop-Anwendung mit Elektronen gebaut ist weniger sicher, es sei denn, einige Leute wie ich frönen es Debuggen. Vor kurzem wurde Yahoo Messenger auf eine neue Version mit einem Elektronenatom gebaut. Und es neu kompiliert und die Symbole geändert. neu kompiliert Yahoo Messenger für meine gewünschten Symbole:

enter image description here

Vergleich von yahoo neuen und neu kompiliert:

enter image description here

Verwandte Themen