Frage

Ich mache ein twitter-client, und ich bin der Bewertung der verschiedenen Methoden zum Schutz der Anmeldeinformationen des Benutzers.

WICHTIG:Ich brauche Sicherheit für die Benutzer-Daten aus anderen Anwendungen.Zum Beispiel sich vorstellen, was passiert, wenn ein bot startet geht um Diebstahl Twhirl Passwörter oder Hotmail/GMail/Yahoo/Paypal von Anwendungen auf dem desktop des Benutzers.

Klarstellung:Ich habe diese vor, ohne den "wichtigen" Teil, aber stackoverflow-UI nicht hilft, um das hinzufügen von details später im Q/Ein Gespräch.

  • Hashing anscheinend nicht tun, es
  • Verschleierung in eine Reversible Weise ist wie der Versuch, sich zu verstecken hinter meinem finger
  • Nur-text-sounds und vermutlich ist promiscuous -
  • Erfordern die Benutzer zu geben, sein Passwort jedes mal machen würde, die Anwendung zu anstrengend

Irgendwelche Ideen ?

War es hilfreich?

Lösung

Dies ist eine Catch-22. Entweder Sie machen den Benutzertyp in seinem Passwort jedes Mal, oder Sie speichern es insecurely (verschleierte, verschlüsselt was auch immer).

Die Art und Weise, dies zu beheben, ist für weitere Betriebssysteme integrierten Passwort-Manager zu übernehmen - wie O X-Schlüsselanhänger. So können Sie einfach Ihr Passwort speichern im Schlüsselbund, hält das Betriebssystem es sicher, und der Benutzer nur in 1 Master-Passwort einzugeben. Viele Anwendungen (wie Skype) auf OS X Verwendung Keychain zu tun genau das, was Sie beschreiben.

Aber da Sie wahrscheinlich mit Windows, würde ich nur mit einiger Verschleierung und Verschlüsselung gehen sagen. Ich denke, man kann über die Passwort-Diebstahl-Bots leicht paranoid sein; Wenn Ihre Anwendung keine große Benutzerzahl hat, stehen die Chancen ziemlich niedrig, dass jemand es Ziel und versuchen, speziell die Passwörter zu stehlen. Abgesehen davon, müßten sie auch Zugriff auf ihre Opfer-Dateisystem haben. Wenn das der Fall ist, sie wahrscheinlich einen Virus / Wurm und haben größere Probleme.

Andere Tipps

Ich glaube, Sie vermissen das größere Bild hier:

Wenn der Desktop gefährdet ist, sind Sie F # *% ED!

Um ein Passwort aus Ihrem Programm zu stehlen, wäre ein Virus auf dem System als Administrator ausgeführt werden. Wenn das Virus erreicht, dass Passwörter aus Ihrem Programm zu stehlen ist Weg nach unten auf seine Liste von bösartigen Dingen, die sie tun wollen.

es im Klartext speichern und läßt die Benutzer wissen .

Auf diese Weise gibt es keine Missverständnisse darüber, welche Sicherheitsstufe Sie erreicht haben. Wenn Benutzer beschweren starten, betrachten XOR-Verknüpfung einer veröffentlichten-on-your-Website konstant auf sie. Wenn Benutzer halten beschweren, „verstecken“ die Konstante im Code und ihnen sagen, es ist eine schlechte Sicherheit.

Wenn Benutzer keine schlechten Menschen aus dem Kasten heraus halten, dann in Effekt alle geheimen Daten, die sie haben, ist Dr. Evil bekannt. Es spielt keine Rolle, ob sie verschlüsselt ist oder nicht. Und wenn sie böse Menschen halten aus, warum Sorgen über Passwörter im Klartext zu speichern?

Ich kann meinen Arsch hier spricht aus, natürlich. Gibt es eine Studie, die zeigt, dass Passwörter im Klartext führt zu schlechter Sicherheit Speichern als speichern sie verschleiert?

Wenn Sie ein Twitter-Client machen dann ihre API

Twitter hat eine sehr gute Dokumentation , so rate ich Ihnen, es alles lesen, bevor sie eine Client machen. Der wichtigste Teil in Bezug auf diese Frage ist, dass Sie nicht die Passwörter speichern müssen, speichern Sie die OAuth Token statt. Sie müssen die XAUTH Bühne verwenden, um die OAuth-Token zu bekommen, dann anderen Twitter-API verwenden, um mit diese OAuth-Token, wo nötig.

  

XAUTH bietet eine Möglichkeit für Desktop und mobile Anwendungen ein auszutauschen   Benutzername und Kennwort für eine OAuth-Zugriffstoken. Sobald die Zugriffstoken   abgerufen wird, XAUTH-fähiger Entwickler des Login verfügen sollte und   Passwort für den Benutzer entspricht.

Sie niemals Passwörter speichern, wenn Sie mit ihm weg bekommen

OAuth Mit dem Schlimmste, das ist eine 3rd-Party (schwarzer Hut Hacker) passieren kann, wird Zugriff zu diesem Twitter-Account aber nicht das Passwort . Dies wird die Benutzer schützen, die naiverweise das gleiche Passwort Online-Dienste für mehrere verwenden.

Verwenden Sie einen Schlüsselbund von einer Art

Schließlich stimme ich zu, dass vorgefertigte Lösungen wie OSX Schlüsselbund sollten die empfindlichen OAuth Informationen, eine kompromittierte Maschine nur die Informationen der momentan entriegelt Schlüsselanhänger offenbaren würde speichern verwendet werden. Das bedeutet, in einem Mehrbenutzersystem nur angemeldeten Benutzer haben ihre Schlüsselanhänger wurden verwundbar.

Andere Schäden Einschränkungen

Es Sachen sein kann, die ich verpasst habe „beste Sicherheitspraktiken“ eine Google nehmen und beginnen zu lesen, was von Bedeutung sein können.

Bearbeiten (als Reaktion auf finnw allgemeine Fall Lösung gewünscht)

Sie möchten, da keine Benutzereingaben, Zugriff auf einen Online-Dienst. Das heißt, Sie haben in der Regel allenfalls Zugriff auf Benutzerebene Steuerung auf die Authentifizierungsdaten über so etwas wie Schlüsselanhänger.

Ich habe OSX Keychain nie so jetzt habe ich werde über SELinux sprechen. In SELinux können Sie sicherstellen, auch diese Authentifizierungsdaten nur zu Ihrem Programm gegeben würden. Und wenn wir auf OS-Ebene Sachen weiter gehen, können Sie auch alle Prozesse von der Boot-schreiben cryptographicly sicher zu sein, kein anderes Programm könnte Ihr Programm werden nachahmt. Das ist alles über ein typisches Benutzer-System und dieses Niveau der Einrichtung gegeben Sie den Benutzer sicher sein können, ist nicht naiv genug beeinträchtigt zu werden, oder ein Systemadministrator ist compitant genug. Auf dieser Ebene konnten wir diese Anmeldeinformationen schützen.

Nehmen wir an, wir gehen nicht so weit in diese Anmeldeinformationen zu schützen, dann können wir das System davon beeinträchtigt wird. An diesem Punkt wird die Authentifizierungsdaten kompromittiert werden, Verschleierung / Verschlüsselung dieser Anmeldeinformationen auf der lokalen Seite füge keine wirkliche Sicherheit und weder auf einem 3rd-Party-Server-Teil oder alle von ihm nicht zu speichern. Dies ist leicht zu sehen, da keine Benutzereingaben gegeben, Ihr Programm selbst Bootstrap diese Anmeldeinformationen zu erhalten. Wenn Ihr Programm es ohne Eingabe tun kann, dann kann so jeder, der sich umgekehrt hat engineered Ihre Verschleierung / Verschlüsselung / Server-Protokoll.

An diesem Punkt Schadensbegrenzung ist, speichern Sie das Kennwort nicht als Authentifizierungs-Credentials. Verwenden OAuth, Cookie-Sitzungen, gesalzen Hashes, usw., sind sie alle Token repräsentieren nur, dass zu einem bestimmten Zeitpunkt in der Vergangenheit Sie beweisen Sie das Passwort kennen. In jedem guten System können diese Token widerrufen werden, die Zeit abgelaufen ist und / oder periodische für ein neues Token während der aktiven Sitzung ausgetauscht werden.

Das Token (in beliebiger Form sein kann) kann auch zusätzliche, nicht von Benutzereingaben Authentifizierungsinformationen enthalten, die Ihre Fähigkeit, schränken sich an anderer Stelle zu verwenden. Es könnte zum Beispiel kapselt Ihre Hostnamen und / oder IP-Adresse. Dies macht es schwierig t zu verwenden,er Anmeldeinformationen auf einem anderen Rechner, da diese Formen der Anmeldeinformationen nachahmen würde den Zugriff auf die angemessene Höhe der Netzwerkinfrastruktur erforderlich.

Bei der weiteren Betrachtung Ich glaube, ich einen Weg gefunden. Ich werde für meine Anwendung Desktop-Anwendung ASP.net-Authentifizierung verwenden, speichere ihre Anmeldeinformationen online und lassen Sie Internet Explorer Passwort-Manager für mich den lokalen Caching dieses sekundären Paares oder Anmeldeinformationen verarbeiten.

Ich will nur, um sie durch einen Facebook-API wie Form während der ersten Anmeldung authentifiziert haben.

Ich bekomme es nicht ... warum ist die Verschlüsselung gut nein? Verwenden Sie einen großen Schlüssel und speichern Sie die Schlüssel in der Maschine Schlüsselspeicher (unter der Annahme, Windows). Fertig und fertig.

OSX:Verwenden Sie den Schlüsselbund

Windows:Verwenden CryptProtectData und CryptUnprotectData

Linux:GNOME Keyring und KDE KWallet

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top