AW: DB-Zugangsdaten verschlüsseln
Zitat:
Zitat:
Zitat:
|
AW: DB-Zugangsdaten verschlüsseln
Zitat:
Wenn du unbedarfte Benutzer, bzw. Möchtegern-Hacker abhalten willst die Zugangsdaten sofort zu sehen: Verschlüssele die Txt-Datei und lege den Schlüssel in den Quelltext Cracker oder zumindest Leute, die wissen wie man mit einem Debugger/Decompiler umgeht, werden das Spiel aber schnell durchschauen und können die Zugangsdaten mit ein bisschen Erfahrung auslesen. Es liegt an dir zu entscheiden, auf was du mit Kanonen schießen willst. Aber bei Programmen im Netzwerk reicht es völlig aus, die Zugangsdaten im Quelltext zu lassen. Stell dir einfach die Frage, was die Leute mit den Zugangsdaten anstellen könnten/wollen. Begrenze halt die Rechte der Zugangsdaten auf bestimmte Tabellen/Views/Procedures und gut ist. Wenn du hypervorsichtig sein willst, protokollierst du jede Aktivität und schreibst einen WatchDog. Aber wie gesagt: Gerade letzteres lohnt sich in der Regel nicht...bleib dann lieber beim geringeren Übel: Verschlüsseln der Txt-Datei und das Ablegen des Schlüssels in der Anwendung. *edit* Ich sehe garade: Aber dann ist es auch egal ob du die Zugangsdaten oder den Schlüssel für die Txt-Datei in der Anwendung hast. Beides gleich unsicher...hält aber halt die erstgenannte Kategorie an Benutzern ab. :D |
AW: DB-Zugangsdaten verschlüsseln
Bitte mach für ein neues Problem auch einen neuen Thread mitbeinem aussagekräftigen Titel auf.
|
AW: DB-Zugangsdaten verschlüsseln
Zu meinem Beispiel noch ein PS:
Wenn Du Probleme mit dem Output haben solltest, bei XOR und Typ String bietet es sich immer an mit Base64-Enc/Dec zu arbeiten. Also Original String kodieren -> Base64Enc(String) -> Das ist Dein Result zum speichern. Andersrum, Datei Laden -> Base64Dec(String) -> String dekodieren -> nun hast Du wieder das Original. Alternativ (so gehe ich meist vor) den Typ auf Binär umstellen (TBytes zum Beispiel) und das speichern/laden auch Binär zu erledigen. Als Ersatz zum .ini Vorschlag den jemand genannt hatte. Binär kann man auch Records speichern/laden um auf ein ähnliches Resultat wie .ini zu kommen. |
AW: DB-Zugangsdaten verschlüsseln
Zitat:
System.IniFiles.TCustomIniFile.ReadBinaryStream System.IniFiles.TCustomIniFile.WriteBinaryStream (da ist der Base64-Kram schon eingebaut) |
AW: DB-Zugangsdaten verschlüsseln
Ja, und jeder der Notepad hat kann sehen wie man was benennt um es noch einfacher zu haben beim rekonstruieren.
Am besten noch so:
Code:
So etwas kann einem im reinen binär Modus nicht passieren, darauf wollte ich hinaus, nicht das ein ablegen solcher Daten nicht Möglich sei.
[Security Option]
DataBasePassWord= edit Und um der Binär Datei noch ein wenig mehr Sicherheit zu geben, erstellt man sich ein paar Fake Records mit was auch immer für Daten, man selbst weiß ja wie die Binär Datei aufgebaut ist, Änfänger im Bereich Reversing eben nicht. |
AW: DB-Zugangsdaten verschlüsseln
Ykcim du möchstest doch verhindern, dass ein Benutzer die Datenbankverbindung nicht raus bekommt - also Server, Benutzer und Passwort - Richtig?
Es ist völlig egal, wie du die Zugangsdaten schützt. Wenn Sie lokal gespeichert sind, kann drauf zugegriffen werden. Wenn du sie verschlüsselst, können sie trotzdem lokal entschlüsselt werden. Sonst könnte dein Programm ja niemals eine Verbindung aufbauen können. D.h. mit der Verschlüsselung schließt du nur ein DAU aus. Findige Benutzer, werden trotzdem die Verbindung finden und könnten diese direkt mit Heidi oder ähnlichen nutzen. Wenn du keinen Schutz auf Serverebene/Tabellen hast, dann hat auch der Benutzer keine Einschränkung. Sicher wäre, wenn die Prüfung/Login nur auf einen geschützten System erfolgt, z.B. der Datenbankserver im verschlossenen Rack. Besser wäre doch: Der Benutzer ist dem Server bekannt und gibt z.B. die Windowsanmeldung durch. |
AW: DB-Zugangsdaten verschlüsseln
Zitat:
Delphi-Quellcode:
uses
System.SysUtils, System.NetEncoding; function Decrypt(const Source, Password: string): string; var bPassword: TBytes; bSource: TBytes; I: Integer; begin Result := ''; bSource := TNetEncoding.Base64.DecodeStringToBytes(Source); bPassword := TEncoding.UTF8.GetBytes(Password); for I := 0 to Length(bSource) - 1 do begin bSource[I] := bSource[I] xor bPassword[I mod Length(bPassword)]; end; result := TEncoding.UTF8.GetString(bSource); end; function Encrypt(const Source, Password: string): string; var bPassword: TBytes; bSource: TBytes; I: Integer; begin Result := ''; bSource := TEncoding.UTF8.GetBytes(Source); bPassword := TEncoding.UTF8.GetBytes(Password); for I := 0 to Length(bSource) - 1 do begin bSource[I] := bSource[I] xor bPassword[I mod Length(bPassword)]; end; result := TNetEncoding.Base64.EncodeBytesToString(bSource); end; |
AW: DB-Zugangsdaten verschlüsseln
Ich habe gerade mal mein Demo mit Unicode gefüttert, funktioniert bei mir Problemlos, bei Euch auch? (wegen Hinweis von Uwe mit älteren Delphis, was meines definitiv ist [D2009])
|
AW: DB-Zugangsdaten verschlüsseln
Zitat:
Edit: Der Trick hierbei ist, ein #0 zu provozieren. Das wird dann beim Schreiben in das Edit als Stringbegrenzer betrachtet. Würde man nur mit Delphi-Strings arbeiten, dann tritt zumindest dieser Fehler nicht auf. Es könnte aber immer noch Probleme im Unicode-Bereich der Surrogates geben. |
AW: DB-Zugangsdaten verschlüsseln
Liste der Anhänge anzeigen (Anzahl: 1)
Das Demo arbeitet korrekt, Anzeige macht natürlich bei einem Terminator Schluss, habe es gerade überprüft.
Also intern (wovon ich Ausgehe das es nur intern abgewickelt wird) läuft es. Anhang 49824 Da sieht man das es 4 Zeichen kodiert sind. Habe einfach Labels für Länge mit rangebaumelt. Ich schrieb ja weiter oben, bei Problemen mit Output wäre Base64 empfehlenswert. Bei Bedarf aktualisiere ich Demo indem ich auch Base64 zwischen schubse. (Dein Code kann mein Delphi noch nicht, die Unit fehlt mir) |
AW: DB-Zugangsdaten verschlüsseln
Liste der Anhänge anzeigen (Anzahl: 2)
Nach suchen suchen suchen, mein Delphi hat Base64 nur in Indy anscheinend verbaut, also habe ich ein anderes Base64 integriert.
Nun sollte es keine Probleme mehr mit Anzeige geben. Es wäre nett wenn aktuellere Delphis das mal Compilieren und berichten ob es funktioniert, auch in Zusammenhang mit Unicode. Besten Dank! Viel Spaß damit. Ps: Die Base64.pas von Sakura aus CodeLib arbeitet irgendwie so gar nicht mit meinem Delphi zusammen. Edit Ganz vergessen, hier der Null-Terminator Test: Anhang 49826 |
AW: DB-Zugangsdaten verschlüsseln
Liste der Anhänge anzeigen (Anzahl: 1)
Endlich! Das klappt so! Ich habe es mit Delphi XE2 und es klappt. :-D:thumb:
Ich habe auch getestet, ob ich die Werte in einer Datei zwischenspeichern kann und nach dem Auslesen funktioniert das DeCrypt auch. VIELEN DANK! Patrick |
AW: DB-Zugangsdaten verschlüsseln
Das freut mich das Dein Dilemma vorerst behoben ist :thumb:
Wenn Du noch ein Sample benötigst wo das ganze in einer Binär-Datei abgelegt & gelesen wird, einfach Fragen :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz