Wenn Sie machen ein Twitter-Client dann ihre API verwenden
Twitter hat eine sehr gute documentation, so rate ich Ihnen, es alles lesen, bevor sie eine Client machen. Der wichtigste Teil in Bezug auf diese Frage ist, dass Sie die Kennwörter nicht speichern müssen, sondern das Token OAuth stattdessen speichern. Sie müssen die Stufe xAuth verwenden, um das OAuth-Token abzurufen, und ggf. andere Twitter-APIs mit diesem OAuth-Token verwenden.
xAuth bietet eine Möglichkeit für Desktop- und mobile Anwendungen, einen Benutzernamen und ein Kennwort für ein OAuth-Zugriffstoken auszutauschen. Sobald das Zugriffstoken abgerufen wurde, sollten xAuth-fähige Entwickler über das Login und das Kennwort verfügen, das dem Benutzer entspricht.
Sie speichern niemals Passwörter, wenn Sie mit ihm
bekommen können weg
OAuth Mit dem Schlimmste, das ist eine 3rd-Party (schwarzer Hut Hacker) bekommt Zugang zu diesem Twitter-Account passieren kann, aber nicht die Passwort. Dies schützt Benutzer, die naiv dasselbe Passwort für mehrere Online-Dienste verwenden.
einen Schlüsselbund von einiger Art verwenden
Schließlich stimme ich, dass vorgefertigte Lösungen wie OSX Schlüsselbund sollten die empfindlichen OAuth Informationen, eine kompromittierte Maschine nur die Informationen der aktuell entriegelten offenbaren würde speichern verwendet werden Schlüsselanhänger. Dies bedeutet, dass in einem Mehrbenutzersystem nur die angemeldeten Benutzer ihre Schlüsselbunde anfällig machen.
Andere Schäden Einschränkungen
Es kann Sachen, die ich verpasst habe für „beste Sicherheitspraktiken“ eine Google nehmen und beginnen zu lesen, was von Bedeutung sein können.
EDIT (als Reaktion auf finnw allgemeinen Fall Lösung gewünscht)
Sie wollen, da keine Benutzereingaben, Zugriff auf einen Online-Dienst. Dies bedeutet, dass Sie in der Regel die Zugriffssteuerung auf Benutzerebene für die Authentifizierungsdaten über einen Schlüsselbund haben.
Ich habe noch nie OSX Keychain verwendet, also werde ich jetzt über SELinux sprechen. In SELinux können Sie auch sicherstellen, dass diese Authentifizierungsdaten nur an Ihr Programm übergeben werden. Und wenn wir weiterhin auf Betriebssystemebene arbeiten, könnten Sie auch alle Prozesse vom Start bis zur Verschlüsselung unterschreiben, um sicher zu sein, dass kein anderes Programm Ihr Programm nachahmen kann. Dies ist alles andere als ein typisches Benutzersystem, und angesichts dieses Setup-Niveaus können Sie sicher sein, dass der Benutzer nicht naiv genug ist, um kompromittiert zu werden, oder ein Systemadministrator genug Kompilation hat. Auf dieser Ebene konnten wir diese Anmeldeinformationen schützen.
Nehmen wir an, wir gehen nicht so weit in den Schutz dieser Anmeldeinformationen, dann können wir davon ausgehen, dass das System kompromittiert ist. An diesem Punkt werden die Authentifizierungsdaten kompromittiert, die Verschleierung/Verschlüsselung dieser Anmeldeinformationen auf der lokalen Seite fügt keine echte Sicherheit hinzu und speichert auch keinen oder nur einen Teil davon auf einem Server eines Drittanbieters. Dies ist leicht zu sehen, da Ihr Programm keine Benutzereingaben benötigt, um sich selbst zu laden, um diese Anmeldeinformationen zu erhalten. Wenn Ihr Programm es ohne Eingabe kann, dann kann auch jeder, der Ihr Verschleierungs-/Verschlüsselungs-/Server-Protokoll umgekehrt hat.
An diesem Punkt ist es Schadensbegrenzung, speichern Sie nicht das Passwort als Authentifizierungsdaten. Verwenden Sie OAuth, Cookie-Sitzungen, gesalzene Hashs usw., es sind alles nur Token, die zeigen, dass Sie irgendwann einmal in der Vergangenheit wussten, dass Sie das Passwort kannten. In jedem guten System können diese Token während der aktiven Sitzung widerrufen, die Zeit abgelaufen und/oder periodisch gegen ein neues Token ausgetauscht werden.
Das Token (in welcher Form es auch sein mag) kann auch zusätzliche Authentifizierungsinformationen für Nicht-Benutzereingaben enthalten, die Ihre Fähigkeit einschränken, sie anderweitig zu verwenden. Es könnte zum Beispiel Ihren Hostnamen und/oder Ihre IP-Adresse einkapseln. Dies erschwert die Verwendung der Anmeldeinformationen auf unterschiedlichen Computern, da das Imitieren dieser Anmeldeinformationen den Zugriff auf die entsprechende Netzwerkinfrastruktur erfordert.
Sie keine Sorge über Man-In-The-Middle-Angriffe erwähnt hat. Es ist trivial für jeden im selben Subnetz, es auszuführen und alle Ihre Kommunikationen abzufangen. – hurst
Wie viel Zeit und Mühe investieren Sie gegen einen Angriff? Es gibt keine perfekte Sicherheit. –
Ich denke, die Frage ist universell. Wenn die beliebtesten Desktop-Mail-Clients, die auf gmail/hotmail zugreifen, dies nicht lösen können, haben wir ein ernstes Problem. – KCorax