Passwort im Quellcode sichern?
Ich habe ein Passwort in meinem code, die benötigt wird, um eine Verbindung zu einem sftp-server. Was ist der beste Weg, um zu "verschleiern" oder verstecken Sie ihn in den code?
Dank
InformationsquelleAutor der Frage grady | 2010-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht speichern Ihr Passwort in Ihrem source-code, speichern Sie es in einem geschützten Bereich innerhalb Sie App.Config (oder Web.Config).
Sehen Verschlüsseln der Konfigurationsdatei-Sektionen Mithilfe der Geschützten Konfiguration Abschnitt in diesem Microsoft Doc
Dies funktioniert durch verschlüsseln der Verschlüsselungsschlüssel mithilfe der integrierten Windows-Zeug, gebunden an die Mac-Adresse und diverse andere undokumentierte Dinge.
Diese wird selbst dann funktionieren, wenn Sie mit mehr als einem server:
Mit diesem, wenn jemand wollte Ihr Passwort zu erhalten, müssten Sie zuerst brechen Sie die Windows-Sicherheit auf Ihrem server (nicht unmöglich, aber schwieriger als die Suche in Ihrem IL für die Passwort-weit).
InformationsquelleAutor der Antwort badbod99
Nicht stören.
Alles, was Sie tun können, Ihre Angreifer trivial rückgängig machen.
Wenn es nur ausführen muss, um auf einer einzigen Maschine, können Sie jedoch die
ProtectedData
Klasseder schützt es sicher vor, dass jemand nicht auf, die Maschine und/oder Benutzer.Im Allgemeinen, die auch nur annähernd sichere Weg, dies zu tun ist, die zum speichern der Schlüssel in einem separaten, sicheren Ort auf.
Zum Beispiel können Sie verschlüsseln Sie mit einem (nicht MD5) hash für ein Passwort, dann muss der Benutzer geben Sie das Kennwort so, dass man den hash. (Der hash und Passwort selbst nicht gespeichert werden; Sie sollten eine separate hash zum überprüfen des Passworts)
InformationsquelleAutor der Antwort SLaks
Ich tatsächlich in Erwägung ziehen, die "geschützte Abschnitte" - Funktion in der App.Config oder Web.Config WENIGER sicher als das speichern das Passwort im code.
Jemand mit server-Zugriff entschlüsseln kann, der Abschnitt von der config genau so schnell wie Sie verschlüsselt sind, indem Sie den Befehl entschlüsseln in dem Artikel beschrieben jeder hält zu zitieren:
https://msdn.microsoft.com/en-us/library/zhhddkxy.aspx#Anchor_1
Also dieses feature von ASP.Net fügt nur die Sicherheit im Fall, dass ein hacker hatte irgendwie den Zugriff auf Ihre web.config, aber nicht den gesamten server (passiert in Zwei tausend zehn als @djteller erwähnt in die padding oracle attack-Kommentar). Aber wenn Sie haben server-Zugriff, Sie sind ausgesetzt in einem cmd nennen. Sie haben nicht einmal zu installieren ildasm.exe.
Jedoch, die Speicherung von aktuellen Passwörter im code ist ein Wartungs-Albtraum. Also eine Sache, die ich gesehen habe, getan ist, speichern eine verschlüsselte Kennwort in der web.Konfiguration und Speicherung der Verschlüsselungs-Schlüssel in Ihrem code. Dies wird erreicht, das Ziel zu verstecken, Passwörter von casual-browsing, während man noch wartbar.
In diesem Fall ein hacker hat, um zumindest Ihren code zu dekompilieren, finden Sie Ihre Schlüssel, und dann herauszufinden, welchen Verschlüsselungsalgorithmus Sie verwenden. Nicht unmöglich, aber sicherlich härter als das ausführen von "aspnet_regiis -pd...".
Mittlerweile bin ich auch auf der Suche nach besseren Antworten auf diese sechs Jahre alte Frage...
InformationsquelleAutor der Antwort Will
Beste Weg, ist nicht!
Andernfalls:
Verschlüsseln Der Konfigurationsdatei-Sektionen Mithilfe Der Geschützten Konfiguration
InformationsquelleAutor der Antwort Mitch Wheat
Gibt es keine "beste Weg", um zu speichern das Passwort im Quellcode, da es sich in vielerlei Hinsicht.
Können Sie verschleiern Passwort-string oder sogar verschlüsseln, um zu verhindern, offenbaren thru einfache Betrachtung aber es kann nicht so behandelt werden, als ernsthafte Schutz.
InformationsquelleAutor der Antwort Nick Martyshchenko
Können Sie ihn auch als einen verschlüsselten Wert in der web.config-Datei. Es sieht nicht allzu schwer:
K scott Allen tutorial http://odetocode.com/blogs/scott/archive/2006/01/08/encrypting-custom-configuration-sections.aspx
Ich denke, es ist ein Scott gu blog post mit links zu anderen Informationen.
http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx
InformationsquelleAutor der Antwort Andrew M
Verschlüsseln Sie es mit etwas stark wie AES, aber, wie angedeutet, die von SLaks, der Angreifer kann reverse Engineering den code und arbeiten heraus, die Verschlüsselungsmethode und die Schlüssel. Alles, was Sie tun ist das hinzufügen einer Schicht, die hält, Skript-kiddies und ein gewisses Maß an Angreifer aus. Jemand, der wirklich will, um es machen zu können. Sie konnte auch Ihr Programm und beobachten Sie, was password gesendet wird.
InformationsquelleAutor der Antwort winwaed
Nicht speichern Ihr Passwort in den Quellcode.
Lesen Sie diese:
http://en.wikipedia.org/wiki/Security_through_obscurity
Es ist kein guter Weg.
Alles, was Sie tun kann, ist ein intelligenter Algorithmus, der zum verschlüsseln des Passwortes.
Einen erfahrenen zurückentwickeln würde zu verwalten, um es zu knacken.
InformationsquelleAutor der Antwort djTeller
Es gibt nicht viel Sie tun können, gegen jemanden, der wirklich will, Ihr Passwort. Allerdings, wenn dies ist keine öffentliche app (intranet? in-house app oder so etwas) könnte man einfach die Verschlüsselung mit einem symmetrischen Verschlüsselungs-Algorithmus, oder etwas tun, wie base-64-Codierung.
Sie könnte führen auch ein obfuscator über Ihren code, um zu machen es weniger offensichtlich, dass es ein Passwort dort irgendwo.
Tun haben Sie eine andere option? Raw-SFTP-Zugriff ist ein bisschen gefährlich, vielleicht kannst du eine Art proxy-service, der in zwischen, die nur ermöglicht die spezifischen Maßnahmen, die Ihre app benötigt. Speichern Sie das Passwort für diesen Dienst im code ist nicht so riskant wie die Speicherung Ihrer SFTP-Kennwort in Ihrem code.
InformationsquelleAutor der Antwort Erik van Brakel
Könnten Sie so etwas wie SLP-Code Protector zu blockieren, reverse-engineering Ihrer Baugruppen. Dennoch, ich Stimme mit allen anderen, ist es nicht die beste Idee.
InformationsquelleAutor der Antwort Steve Danner