Angenommen, ich habe irgendwo in meinem Programm ein wichtiges Passwort, und ich möchte es sicherer machen, zB:
%Vor%Vor ungefähr 8 Jahren nutze ich es aus Spaß, Dinge zu "knacken", also habe ich das ganz leicht mit OllyDbg gefunden.
Was ich wissen muss ist, ob es eine Möglichkeit gibt, dieses Ding vor neugierigen Blicken zu schützen. Ich dachte über das Speichern des Passworts direkt in der Komponente nach, weiß aber nicht, ob es etwas nützen würde.
Mach es einfach nicht. Wenn Sie ein Passwort sicher aufbewahren möchten, geben Sie es nicht in das Programm ein. Sie können den Benutzer fragen, ob das Programm interaktiv ist. Wenn nicht, sollten Sie eine Art nicht-Passwort-basierte Authentifizierung für das Programm einrichten.
Wenn Sie das Passwort in das Programm einbetten müssen, ist die Regel sehr einfach - geben Sie das Programm niemals an jemanden, der nicht in der Lage sein soll, irgendetwas zu tun, was das Passwort ihnen erlaubt.
Während die Antwort, die Sie einfach nicht tun sollten, richtig ist, gibt es in der Praxis Situationen, in denen die reale Welt Sie zwingt. In den ein oder zwei Fällen, in denen ich zu etwas gezwungen wurde, das ich benutzt habe, ist eine Funktion zu programmieren, die ein bekanntes Passwort von Grund auf mit einer mathematischen Formel generiert - zum Beispiel den ersten Buchstaben der englischen Wörter für die die ersten 8 Ziffern von PI in umgekehrter Reihenfolge. Natürlich kann das immer noch geknackt werden, aber es macht die Aufgabe etwas schwieriger und sollte gelegentliche Browser abhalten.
Natürlich, wenn Sie wirklich FTP (nicht SFTP) verwenden, übergeben Sie das Passwort sowieso im Klartext über das Netzwerk. Ich würde mich anfangs mehr damit befassen - es ist ein viel offensichtlicherer Angriffsvektor.
Obwohl ich David Schwartz vollkommen zustimme (Sie sollten keine Passwörter direkt in ein Programm einbetten), ist es möglich, schwieriger zu machen, damit jemand es findet.
Anstatt die Zeichenfolge in einem Stück zu definieren, können Sie die Zeichenfolge prozedural erstellen. Auf diese Weise wird die Zeichenfolge als Ganzes nie in einem Stück in der ausführbaren Datei gespeichert, was das Auffinden erschwert.
Das ist einfach kein Problem, das die Kryptographie lösen kann. Die einzige Möglichkeit, diesen Wert zu schützen, besteht darin, sich auf die Benutzerzugriffssteuerung Ihres Betriebssystems zu verlassen. Stellen Sie sicher, dass die Berechtigungen der Datei so begrenzt wie möglich sind. chown user:user file
dann chmod 400 file
.
Hier ist ein Weg - es hält es vor neugierigen Leuten mit einem Hex-Viewer sicher, aber wird natürlich nicht mit fortgeschrittenen Techniken zur Laufzeit arbeiten:
%Vor% Wie gesagt, es ist nicht sicher, wenn jemand während der Codeausführung mit einem Debugger eine Pause setzt und die ftp.password
im Speicher überprüft, nachdem er gesetzt wurde, aber es ist sicher vor einem Hex-Viewer. Normalerweise setze ich den Designtime-Wert von ftp.password
auf etwas wie DoyouthinkImthatstupid?
für diejenigen, die es gerne versuchen.
Vielleicht könnten Sie die Zeichenfolge verschlüsseln und entschlüsseln, wenn Sie sie lesen?
Aber selbst dann, wie andere schon gesagt haben, ist das interne Speichern eines Passworts in der Anwendung keine gute Idee.
Selbst wenn Sie die Zeichenkette verschlüsselt oder verschlüsselt haben, ist sie vor bestimmten Personen nicht sicher.