2017-02-02 5 views
1

Also verwendet meine Firma eine Bitbucket Cloud für SCM, und ich benutze ScourceTree auf meiner Laptop-Workstation. Ich arbeite an einem Code-Projekt, das ursprünglich hauptsächlich von jemand anderem geschrieben wurde. Zurzeit verwendet die Software, an der ich arbeite, eine Klartext-Konfigurationsdatei, um Benutzername und Passwort an das Programm zu übergeben braucht.Wie gefährlich ist Commit-Code mit Klartext-Passwörtern in einem öffentlichen/ungesicherten Netzwerk? Wie handhabe ich Passwörter im Code richtig?

Nun, ich bin kein Fremder der Tatsache, dass dies eine sehr schlechte Sache ist, aber ich habe noch dazu kommen, das reparieren als Solo-Entwickler. (Obwohl es definitiv eine hohe Priorität hat).

Ich wollte heute Änderungen an der Konfigurationsdatei vornehmen, aber ich war zögerlich, da ich an einem ungesicherten Netzwerk in einem Café arbeitete. Das hat mich neugierig gemacht: Wie sicher sind die meisten dieser Cloud-basierten Code-Dienste (z. B. Bitbucket/Github) und wie gefährlich ist es, Code wie diesen in einem öffentlichen Netzwerk zu committen?

Ich habe die großartige Fähigkeit, remote zu arbeiten und möchte meinen Job nicht riskieren, indem ich mein Unternehmen unnötigen Risiken aussetze.

Da ich weiß, dass Klartext Passwörter eher eine schlechte Idee sind, fragte ich mich auch, wie ich dieses Problem beheben sollte. Die App, an der ich gerade arbeite, verwendet Java, und die Passwörter befinden sich in einer Eigenschaftendatei. Gibt es eine Java-Bibliothek oder ein Dienstprogramm, das ich kennen sollte (immer noch ein wenig neu in Java).

Ich hatte gehofft, dass dies ein allgemeiner Antwortpunkt für Anfänger sein könnte, die sich mit dem sicheren Umgang mit Passwörtern im Code (jeder Sprache) befassen. Ich arbeite auch in C++ und PHP, daher würde ich mich über Ratschläge freuen, wie man mit solchen Dingen in diesen Sprachen umgehen kann. Brauche keine extremen Details, nur zu suchende Schlüsselwörter. Sind Bibliotheken oder Dienstprogramme in die Sprachen integriert?

Edit: Ich bin mir bewusst, dass this SO question eine gute Methode zum Umgang mit meiner Situation in Java erklärt, aber a) die Frage nach Netzwerksicherheit zwischen Bitbucket/Github und SourceTree ist anders und b) Ich fragte nach mehr Informationen über allgemeine am besten Praktiken über Sprachen, eher, dass JUST Besonderheiten über Java (obwohl der Link zur Verfügung gestellt war sehr hilfreich bei der Adressierung der Java-spezifischen Fall).

+0

Öffentliches oder privates Netzwerk, Passwörter in Textdateien zu behalten ist eine schlechte Idee. –

+0

Warum werden die Kennwörter in der Quellcodeverwaltung beibehalten? Klartext-Passwörter sind eigentlich keine schlechte Idee _per se_, aber sie allen zugänglich zu machen, die auf Ihren SCM zugreifen können. Die Frage erscheint etwas zu weit gefasst, weil Sie keine Informationen über die betreffende Anwendung geben. –

+0

Die Antwort darauf ist einfach: Weil ich für eine kleine Firma mit nur einem Solo-Entwickler arbeite, und der Typ vor mir hat es so eingerichtet. Ich mag die Idee, die Passwörter in einer separaten (nicht-scm) Datei zu haben, wie von @Mike Nakis vorgeschlagen. Aber ich bin gerade dabei, zu versuchen, diese Software zu überholen, und ich denke, dass ich der Software im Allgemeinen eine Benutzerauthentifizierung hinzufügen werde, so dass meine aktuelle Situation kein Problem mehr darstellen sollte. Ich frage mich einfach diese Dinge für zukünftige Referenz. –

Antwort

1

Was für ein Zufall, wir hatten es nur mit einer ähnlichen Situation bei der Arbeit zu tun. Die Art und Weise, wie wir uns entschieden haben, es zu lösen, besteht darin, dass der Code Passwörter aus einer externen Klartext-Passwortdatei holt, die nicht ist. (Fügen Sie es zu .gitignore hinzu oder besser noch, verschieben Sie es aus der Quellstruktur.) Wer den Code verwenden möchte und genügend vertrauenswürdig ist, um die Kennwörter zu haben, muss diese Datei über andere Mittel als git beziehen.

Wenn Sie einen Ort, um Passwörter sicher speichern möchten, gibt es Keepass, mit Builds für Windows und Linux, und einige Derivate davon. Es führt eine Liste von Logins und für jeden Eintrag in der Liste gibt es eine Option "Passwort in die Zwischenablage kopieren". Es wischt sogar das Passwort eine Minute später aus der Zwischenablage. Aber dann sind die dort gespeicherten Passwörter nicht aus dem Code zugänglich.

0
  1. Verwenden Sie für das Netzwerkproblem ein VPN.

  2. Wie bei Passwörtern ist es lange üblich, die eigentlichen Passwörter nicht ANWENDER zu speichern. Speichern Sie eine Tabelle mit Benutzername/Passwort-Hash. Wenn das Passwort erstellt wurde, hasse es und speichere den Hash. Wenn sich der Benutzer anmeldet und sein Kennwort eingibt, führen Sie einen Hash aus und vergleichen Sie ihn mit dem gespeicherten Hashwert. Dies ist seit Jahrzehnten üblich.

+0

Ich stelle fest, dass die SO-Frage, auf die oben verwiesen wird, viel über das Verschlüsseln von Kennwörtern spricht und sich dann Sorgen darüber macht, den Entschlüsselungsschlüssel zu speichern. Wenn Sie nur einen Einweg-Hash ausführen, müssen Sie nicht ver- und entschlüsseln. Dann ist die Software, die Sie schreiben, nicht einmal in der Lage, die Passwörter im Klartext zu produzieren und kann deshalb nicht gehackt werden. –

+2

OP erwähnt, dass das Passwort benötigt wird, um sich mit den benötigten Diensten zu verbinden, so dass das eigentliche Passwort anstelle eines Hashs für die Anwendung zugänglich sein muss. –

+0

Ah, das habe ich vermisst. –

Verwandte Themen