AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite DB verschlüsseln

Ein Thema von sko1 · begonnen am 23. Apr 2018 · letzter Beitrag vom 25. Apr 2018
Antwort Antwort
Seite 1 von 2  1 2      
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

SQLite DB verschlüsseln

  Alt 23. Apr 2018, 09:05
Datenbank: SQLite • Version: 3 • Zugriff über: Firedac
Hallo,

wenn ich das Beispiel der SQlite-Datenbankverschlüsselung richtig verstehe, wird bei einer bestehenden Datenbank per FDSQLiteSecurity1 nur das Passwort und der Verschlüsselungsalgorithmus gesetzt und damit ist die DB dann "von außen" nicht mehr lesbar...

Nach dieser (einmaligen) Aktion wird dann mit der DB gearbeitet indem der FDConnection Passwort und Verschlüsselung beim Öffnen mitgegeben werden:

Delphi-Quellcode:
    FDConnection1.Params.DriverID := 'SQLite';
    FDConnection1.Params.Database := edtPath.Text;
    FDConnection1.Params.Values['Encrypt'] := cbMode.Items[cbMode.ItemIndex];
    FDConnection1.Params.Password := edtPwd.Text;

Ist das soweit richtig?

Ciao
Stefan
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SQLite DB verschlüsseln

  Alt 23. Apr 2018, 09:25
Yepp.
Kurze Antwort, aber so mache ich es auch.
Wichtig ist nur, das Passwort dann gut genug zu verschlüsseln, sonst hast Du ggf. eine nach allen Regeln der Kunst z.B. mit AES256 verschlüsselte SQLite-DB, aber dennoch keinen guten Schutz, weil das Passwort irgendwo auftaucht, wo es das nicht sollte.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: SQLite DB verschlüsseln

  Alt 23. Apr 2018, 11:16
Danke, wieder ein Problem weniger

Ciao
Stefan
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: SQLite DB verschlüsseln

  Alt 23. Apr 2018, 13:40
Eine Nachfrage hätte ich da noch:

Mit
FDSQLiteSecurity.CheckEncryption; bekomme ich ja den aktuellen Status der Datenbank, aber wenn ich vorher das Passwort setze bekomme ich Laufzeitfehler wenn die DB noch unverschlüsselt ist, setze ich das Passwort in FDSQLiteSecurity nicht und frage den Status ab bekomme ich einen Laufzeitfehler wenn die DB bereits verschlüsselt ist.

Diese Fehler treten im Beispiel nicht auf!
Ich erzeuge aber meine Komponenten zur Laufzeit und habe alle möglichen Properties des Beispiels kontrolliert, finde aber nicht die Stelle wo man die Exception verhindern kann!

Hat hierzu noch jemand eine Idee?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: SQLite DB verschlüsseln

  Alt 24. Apr 2018, 14:34
Hatte ich am Anfang auch...

Problem war die Reihenfolge...

Ich hab das hinbekommen - bin gerade nicht an meinem Rechner...

Workaround... :

Wenn die Datenbank verschlüsselt ist eine Datei BaseName.SCR anlegen... (Ohne Inhalt)

if Fileexists(Basename+'.SCR') then... Ich schau aber gerne noch nach der "richtigen" Lösung.

Mavarik
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: SQLite DB verschlüsseln

  Alt 24. Apr 2018, 14:46
Ja bitte schau mal!

Das mit der leeren Datei als Workaround habe ich nicht verstanden...

Ciao
Stefan

Nachtrag:
Jetzt habe ich es kapiert, ist die Datei (egal wie sie heißt) vorhanden, soll das Programm davon ausgehen dass die DB verschlüsselt ist?
Funktioniert aber nur eingeschränkt!
Wenn die DB z.B. gelöscht wird, wird sie beim ersten nächsten Zugriff wieder neu erst mal unverschlüsselt erstellt und die Kennzeichnungsdatei ist immer noch vorhanden...!

Geändert von sko1 (24. Apr 2018 um 14:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: SQLite DB verschlüsseln

  Alt 24. Apr 2018, 15:34
Funktioniert aber nur eingeschränkt!
Wenn die DB z.B. gelöscht wird, wird sie beim ersten nächsten Zugriff wieder neu erst mal unverschlüsselt erstellt und die Kennzeichnungsdatei ist immer noch vorhanden...!
Deswegen eine Class Methode Kill, die beide Dateien löscht.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: SQLite DB verschlüsseln

  Alt 25. Apr 2018, 07:11
Wenn da manuell was gelöscht wird hilft die Class-Methode auch nicht..

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: SQLite DB verschlüsseln

  Alt 25. Apr 2018, 08:22
Emba erklärt es ein wenig anders als Du beschreibst, vielleicht nochmal lesen und korrekt anwenden? Ich mein, eventuell hast Du einen Fehler im Code.
Funktion FireDAC.Phys.SQLite.TFDSQLiteSecurity.CheckEncryption gibt als Ergebniss
Zitat:
<unencrypted> = The database is not encrypted.
For example: aes-256 = The database is encrypted and the correct password is specified.
<encrypted> = The database is probably encrypted, but the specified password is not correct.
empty string = Some other error happened at encryption checking.
Ich kann nur wiederholen was da steht da ich selbst gerade an SQLite3 rumbastel allerdings ohne FireDAC/AnyDAC/UniDAC etc sondern nativ.

edit
RAD Studio Demo Code, vielleicht hilft Dir das.
Gruß vom KodeZwerg

Geändert von KodeZwerg (25. Apr 2018 um 08:36 Uhr) Grund: Leerzeichen da der String zu lang war.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: SQLite DB verschlüsseln

  Alt 25. Apr 2018, 09:04
Wenn da manuell was gelöscht wird hilft die Class-Methode auch nicht..

Ciao
Stefan
Wo ist das Problem, vor einer Neuanlage die Reste zu löschen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 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