Ich muss mich einem neuen kleinen Projekt stellen. Es wird ungefähr 7 oder 9 Tabellen haben, von denen die größte um maximal 1000 Zeilen pro Monat wächst.
Ich dachte an SQLite als meine Datenbank ... Aber ich muss die Datenbank schützen, falls jemand Daten aus der Datenbank ändern möchte
Meine Hauptfrage ist:
Ist es möglich, eine SQLite-Datenbank mit einem Passwort zu schützen, wie Sie es beim Zugriff tun würden?
Welches andere RDBMS würden Sie für eine so kleine Lösung empfehlen?
Die Entwicklung wäre auf C #, aber ich suche etwas freies.
Antworten:
Sie können eine SQLite3-Datenbank mit einem Kennwort schützen. Stellen Sie das Kennwort wie folgt ein, bevor Sie Vorgänge ausführen.
dann kannst du das nächste mal gerne darauf zugreifen
Dadurch kann kein GUI-Editor Ihre Daten anzeigen. Einige Editoren können die Datenbank entschlüsseln, wenn Sie das Kennwort angeben. Der verwendete Algorithmus ist RSA.
Wenn Sie später das Passwort ändern möchten, verwenden Sie
Verwenden Sie zum Zurücksetzen oder Entfernen des Kennworts
quelle
Sie können die integrierte Verschlüsselung des SQLite .net-Anbieters (System.Data.SQLite) verwenden. Weitere Informationen finden Sie unter http://web.archive.org/web/20070813071554/http://sqlite.phxsoftware.com/forums/t/130.aspx
Öffnen Sie die Datenbank und verwenden Sie die ChangePassword () - Funktion von SQLiteConnection, um eine vorhandene unverschlüsselte Datenbank zu verschlüsseln oder das Kennwort einer verschlüsselten Datenbank zu ändern:
Um eine vorhandene verschlüsselte Datenbank zu entschlüsseln Aufruf
ChangePassword()
mit einemNULL
oder""
Passwort:Geben Sie zum Öffnen einer vorhandenen verschlüsselten Datenbank oder zum Erstellen einer neuen verschlüsselten Datenbank ein Kennwort an,
ConnectionString
wie im vorherigen Beispiel gezeigt, oder rufen Sie dieSetPassword()
Funktion auf, bevor Sie eine neue öffnenSQLiteConnection
. Die in der angegebenen KennwörterConnectionString
müssen Klartext sein, die in derSetPassword()
Funktion angegebenen Kennwörter können jedoch Binärbyte-Arrays sein.Standardmäßig verwendet das Schlüsselwort ATTACH denselben Verschlüsselungsschlüssel wie die Hauptdatenbank, wenn eine andere Datenbankdatei an eine vorhandene Verbindung angehängt wird. Um dieses Verhalten zu ändern, verwenden Sie den KEY-Modifikator wie folgt:
Wenn Sie eine verschlüsselte Datenbank mit einem Klartextkennwort anhängen:
So hängen Sie eine verschlüsselte Datenbank mit einem binären Kennwort an:
quelle
Verwenden Sie SQLCipher, eine OpenSource-Erweiterung für SQLite, die eine transparente 256-Bit-AES-Verschlüsselung von Datenbankdateien bietet. http://sqlcipher.net
quelle
Sie können Ihre SQLite-Datenbank mit dem SEE-Addon verschlüsseln. Auf diese Weise verhindern Sie unbefugten Zugriff / unbefugte Änderung.
Zitieren der SQLite-Dokumentation:
Weitere Informationen zu diesem Addon finden Sie unter diesem Link .
quelle
Eine Option wäre VistaDB . Sie ermöglichen es, Datenbanken (oder sogar Tabellen) passwortgeschützt (und optional verschlüsselt) zu machen.
quelle
Für Ihre Frage zum Passwortschutz Ihrer SQLite-Datenbank glaube ich nicht, dass dies möglich ist.
Sie können es jedoch verschlüsseln. Hier einige Informationen dazu:
http://sqlcrypt.com/
Es sind 149 US-Dollar pro Plattform.
quelle
Wenn Sie FluentNHibernate verwenden , können Sie folgenden Konfigurationscode verwenden:
Methode UsingFileWithPassword (Dateiname, Passwort) verschlüsselt eine Datenbankdatei und legt das Passwort fest.
Es wird nur ausgeführt, wenn die neue Datenbankdatei erstellt wird. Die alte, nicht verschlüsselte Version schlägt fehl, wenn sie mit dieser Methode geöffnet wird.
quelle
Ich weiß, dass dies eine alte Frage ist, aber wäre die einfache Lösung nicht, die Datei nur auf Betriebssystemebene zu schützen? Verhindern Sie einfach, dass die Benutzer auf die Datei zugreifen, und dann sollten sie sie nicht berühren können. Dies ist nur eine Vermutung und ich bin mir nicht sicher, ob dies eine ideale Lösung ist.
quelle
Warum müssen Sie die Datenbank verschlüsseln? Der Benutzer kann Ihr Programm leicht zerlegen und den Schlüssel herausfinden. Wenn Sie es für die Netzwerkübertragung verschlüsseln, sollten Sie PGP verwenden, anstatt eine Verschlüsselungsschicht in eine Datenbankschicht zu komprimieren.
quelle