Webanwendung als Open Source Projekt
lima-city → Forum → Die eigene Homepage → Sicherheit im Internet
anwendung
attribut
besuch
besucher
browser
code
datei
datenschutz
datum
entwickeln
idee
notiz
nutzen
projekt
quellcode
server
teil
url
vergleichen
vertrauen
-
Hallo ,
ich arbeite gerade an einer Webanwendung. Bei dieser kann man sich anmelden und dann zB. Notizen schreiben. Diese Notizen werden natürlich auch verschlüsselt. Da aber der Nutzer den Quellcode nicht kennt und überprüfen kann ob diese Daten auch wirklich verschlüsselt werden, möchte ich diese Webanwendung als ein Open Source Projekt führen.
Jetzt habe ich das Problem, dass man sich bei meiner Webseite anmeldet und somit wird auch eine Verbindung zu meiner Datenbank aufgebaut. Desshalb sind in diesem - für jeden einsehbaren - Quellcode meine Zugangsdaten. Was aber nicht jeder sehen sollte. Um dies zu verhindern könnte ich ja zB. diesen Teil einfach weglassen. Aber dann wäre dies ja kein Authentischer Quelltext mehr, da dieser ja verändert ist. Wie wird dies zB. bei Mega gemacht? Wird dort der Teil auch einfach weggelassen?
Mein zweites Problem / Frage an Open Source ist, da dies ja auf meinem FTP-Server liegt und somit auch nur ich Zugang zu diesem habe, könnte ich ja dort einen anderen Quellcode haben, der dann in Wirklichkeit zB. nicht mehr die Daten verschlüsselt. Habt ihr da eine Idee?
Vielen Dank im Voraus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Man könnte die Authentifizierung eventuell über alternative Login Plugins lösen. Oder man nimmt das Passwort einfach aus dem Sourcecode raus, das verändert ja nichts am Code oder der Funktionalität.
-
horstexplorer schrieb:
Oder man nimmt das Passwort einfach aus dem Sourcecode raus, das verändert ja nichts am Code oder der Funktionalität.
Dies führt mich dann zur zweiten Frage:
Wenn das Passwort weggelassen werden kann (Dass würde dann heißen, der veröffentlichte Quellcode ist nicht der selbe wie die Webanwendung benutzt.), dann könnte man ja auch eine Funktion weglassen, die zB. die Notizen nocheinmal woanderst unverschlüsselt speichert. -
Man könnte auch den falschen Sourcecode anzeigen und es funktioniert komplett anders.
So ein wenig Vertrauen steckt da schon mit drinnen.
Beitrag zuletzt geändert: 27.2.2018 21:49:46 von horstexplorer -
Bei einer Webanwendung die auf deinem Server läuft muss der Benutzer einfach darauf vertrauen, dass du den besagten Source-Code verwendest.
Anders ist das bei Anwendungen für Host Systeme, wie zum Beispiel Windows-Executables.
Von diesen Anwendungen kannst du einen Hash Wert vom Open-Source Code erstellen und diesen dann mit der tatsächlichen Anwendung vergleichen. Dann hast du quasi den Beweis erbracht.
Aber selbst das ist richtig aufwändig. Das hatte vor ein paar Jahren einmal jemand für TrueCrypt gemacht. Der musste dann aufwändig herausfinden auf welcher Software und in welcher Version die Anwendung generiert wurde.
Wie horstexplorer schon sagte, ein wenig Vertrauen steckt da schon dahinter. -
Du könntest die Notizen in Javascript verschlüsseln, den Javascript Sourcecode veröffentlichen, dann könnten die Besucher bei jedem Besuch die hashes vergleichen(vielleicht könntest du noch integrity Attribute bei <script> Tags setzen) und fertig. Allerdings wird Verschlüsselung im Browser (mit Javascript) von vielen angezweifelt, weil manche Browser nötige Features nicht unterstützen, man ziemlich einfach etwas falsch machen kann, ...
Oder du machst es so, dass sie eine HTML Datei (inklusive Scripts) herunterladen & der holt dann die Notizen & ver/entschlüsselt sie, dann kannst du die Datei nicht verändert haben, ist aber immer noch im Browser & mit Javascript
Mega hat es so ähnlich gemacht: https://github.com/meganz/MEGAsync (Ver-/Entschlüsselung im Browser)
Du könntest auch ein Desktopprogramm/Smartphone App entwickeln, das die verschlüsselten Dateien hoch/herunterlädt und ver/entschlüsselt, bei denen wäre es auch einfacher die hashes zu vergleichen.
Aber ist Datenschutz wirklich so vielen Nutzern wichtig? Simplenote, Google Keep & Evernote sind auch ziemlich erfolgreich... -
user012 schrieb:
Du könntest die Notizen in Javascript verschlüsseln, den Javascript Sourcecode veröffentlichen, dann könnten die Besucher bei jedem Besuch die hashes vergleichen(vielleicht könntest du noch integrity Attribute bei <script> Tags setzen) und fertig. Allerdings wird Verschlüsselung im Browser (mit Javascript) von vielen angezweifelt, weil manche Browser nötige Features nicht unterstützen, man ziemlich einfach etwas falsch machen kann, ...
Oder du machst es so, dass sie eine HTML Datei (inklusive Scripts) herunterladen & der holt dann die Notizen & ver/entschlüsselt sie, dann kannst du die Datei nicht verändert haben, ist aber immer noch im Browser & mit Javascript
Mega hat es so ähnlich gemacht: https://github.com/meganz/MEGAsync (Ver-/Entschlüsselung im Browser)
Du könntest auch ein Desktopprogramm/Smartphone App entwickeln, das die verschlüsselten Dateien hoch/herunterlädt und ver/entschlüsselt, bei denen wäre es auch einfacher die hashes zu vergleichen.
Aber ist Datenschutz wirklich so vielen Nutzern wichtig? Simplenote, Google Keep & Evernote sind auch ziemlich erfolgreich...
Ich glaube da ist der Aufwand/Nutzen Faktor viel zu klein.
Es wäre vermutlich auch möglich die Passwörter für die DB in eine Config aus zu lagern. Somit veränderst du nichts an dem Programm an sich sondern nur an der Konfiguration. -
user012 schrieb:
Du könntest die Notizen in Javascript verschlüsseln...
Daran versuche ich mich gerade. Ich verwende AES. Ich muss jetzt nur noch überlegen, wie ich das Passwort speichere. Ich kann es ja nicht im Klartext im LocalStorage speichern.
Meine Idee ist bisher so, dass ich eine Userid erstelle. Ein Sha256 Hash der mit PHP erstellt wird, dort sind dann IP-Adresse, Browser usw. enthalten und wird mit ajax übertragen. Mit diesem Hash kann ich dann das Passwort entschlüsseln und dann die Dateien mit diesem Passwort verschlüsseln.
user012 schrieb:
Aber ist Datenschutz wirklich so vielen Nutzern wichtig? Simplenote, Google Keep & Evernote sind auch ziemlich erfolgreich...
Da kann ich dir - leider- nur zustimmen. Echt schade.
Beitrag zuletzt geändert: 28.2.2018 19:14:04 von cybercrack -
cybercrack schrieb:
Wie wird dies zB. bei Mega gemacht? Wird dort der Teil auch einfach weggelassen?
Mein zweites Problem / Frage an Open Source ist, da dies ja auf meinem FTP-Server liegt und somit auch nur ich Zugang zu diesem habe, könnte ich ja dort einen anderen Quellcode haben, der dann in Wirklichkeit zB. nicht mehr die Daten verschlüsselt.
Zu Mega:
Mega veröffentlicht sicher nicht den gesamten Quellcode, sondern nur Teile und diese sind auch noch unter verschiedenen Lizenzen (d.h. bei jedem Projekt müsste man einzeln prüfen, wie man diesen nutzen darf)
Wie wird das bei anderen gemacht?
Bei Megas Webclient kann man gut sehen, was üblich ist: Man definiert eine Datei (z.B.: .gitignore unter Git) in der die Ordner und Dateien stehen, die nicht veröffentlicht werden sollen - bei Megas Webclient: https://github.com/meganz/webclient/blob/master/.gitignore
In solchen Dateien sind klassischerweise auch die Config-Dateien mit den Zugangsdaten inbegriffen. Damit der Nutzer aber trotzdem die App mit seinen Zugangsdaten nutzen kann, kann man z.B.: wie WordPress Beispieldateien veröffentlichen: https://github.com/WordPress/WordPress/blob/master/wp-config-sample.php
Ich bezweifle, dass ein vernünftiger Mensch unter Open Source versteht, dass die Zugangsdaten inbegriffen sind - es geht ja um den Code und nicht um die Einstellungen, die unterschiedlich ausfallen können ... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage