Ich versuche ein automatisiertes Tool zu erstellen, das die letzten Transaktionen auf meinem Girokonto überprüft (die Käufe meiner Frau ausspioniert, lol). Das Tool sendet meinen Benutzernamen und mein Passwort über SSL und scrappt dann den Inhalt der Bankseite nach Transaktionen. Natürlich wird alles über SSL gesendet, aber um es automatisiert zu machen, muss ich meinen Benutzernamen und mein Passwort irgendwo speichern.
Also habe ich mit den Strings, Security und SecureString angefangen. Ich habe ein Formular für die Eingabe meines Benutzernamens und Passworts in einen SecureString (Zeichen für Zeichen) erstellt, um sicherzustellen, dass keine System.Strings verwendet werden. Dann erhalte ich char [] aus dem SecureString, erhalte ein Byte [], setze das Zeichen [] auf Null, verschlüssele das Byte [] mit Hilfe der DPAPI und einer in den Code integrierten Salt-Zeichenkette, konvertiere das verschlüsselte Byte [] in ein Base64 System.String, setze die Bytes [] 'auf Null und speichere die Crypto-Zeichenfolge in einer Anwendungseinstellung.
Die Frage war, wie bekomme ich es in POST-Daten in einem HttpWebRequest zurück, ohne es zu einem System.String. Was ich herausgefunden habe, war die folgende Funktion (die URL kodiert auch die Zeichen ohne Strings).
%Vor%Ich setze die char [] 's ab, nachdem ich mit ihnen fertig bin. Ich vergewissere mich auch, das zurückgegebene Byte [] auf Null zu setzen, nachdem ich sie in den HttpWebRequest-Stream geschrieben habe. Ist das sicher oder erstellt der GC Kopien der Objekte char [] und byte []? Ist das besser als die Verwendung von System.String? Ich habe andere Beiträge Sprichwort, um unsicheren Code zu verwenden und alles in nicht verwaltetem Speicher zu tun, aber ich muss am Ende noch ein Byte [] zu meinem HttpWebRequest bekommen.
Tags und Links .net post securestring