2016-08-09 60 views
0

Ich entwickle eine Anwendung, die eine Datenbank verwenden soll. System ist sehr einfach, dass ich mit einem dateibasierten Datenbanksystem versuchen werde, jedoch habe ich ein Thema gefunden, das für SQLite sehr kritisch ist.So steuern Sie den Zugriff auf die SQLite-Datenbank

Wenn derzeit jemand weiß, dass die Anwendungsdatenbank SQLite ist, kann er einen SQLite-Manager öffnen und Datenbankinhalte anzeigen und schließlich Daten ändern. Ist es möglich, das in SQLite zu vermeiden?

+0

Kann dies nicht auf Systemebene durchgeführt werden? Ändern Sie den Besitz der Datenbankdatei in das Konto, unter dem die Anwendung ausgeführt wird, und beschränken Sie den Lese-/Schreibzugriff auf den Besitzer. Auf einem Gnu-System würde das "chown" und "chmod" heißen. – shwoop

+0

Das ist nicht möglich. Dies ist Windows PC und jeder Benutzer hat Zugriff auf den Computer, auf dem die Anwendung ausgeführt wird. Die Anwendung besteht aus 2 Teilen. Ein Windows-Dienst, der unter dem lokalen Systemkonto ausgeführt wird, und eine Windows-Formularanwendung, die unter dem aktuell angemeldeten Benutzer ausgeführt wird. Ich kann vorher nicht wissen, ob der angemeldete Benutzer ein Administrator der Maschine ist. In den meisten Fällen wird er es sein. – jstuardo

Antwort

0

Sie können normale Dateisystemsicherheit verwenden, um unbefugten Zugriff auf die Datei zu verhindern. Der Windows-Dienst, der unter seinem Systemkonto ausgeführt wird, besitzt die Datei und führt im Auftrag der Formularanwendung den gesamten Zugriff darauf aus.

Allerdings gesagt, "y'know, Microsoft SQL Server ist ziemlich gut in diesem Fall gut", und Sie können eine Einzelbenutzerversion davon kostenlos erhalten. (Und das vollständige Produkt kostet nicht dass viel ...) Sie erstellt eine ausgezeichnete, leistungsstarke Implementierung, komplett mit einem Sicherheitsmodell, und ihr Server verwendet die Techniken, die ich gerade beschrieben habe, um die zugrunde liegenden Dateien zu sichern. Es wird dann sehr, sehr einfach sein, die Formularanwendung auf diese Datenbank zu richten.

"Wenn in Rom, tun Sie wie die Römer tun."

+0

Wie gesagt, das System ist sehr einfach, dass ich keine Datenbank-Engine installieren möchte, um diese Aufgabe zu erfüllen. SQL Server muss eine sehr große Datenbank-Engine installieren, das möchte ich vermeiden. Auch wenn ich Express Edition oder LocalDb Lösung verwende, muss ich ein komplettes Produkt installieren, dessen Installer mehrere MB groß ist. – jstuardo

+0

Yup. Sei nur sicher, dass du kein Rad neu erfindest. Wenn die Datensicherheit eine wichtige Rolle spielt, kann die Verwendung von SQLite kontraindiziert sein. –

+0

Das musste ich wissen. Wenn SQLite keine solche Sicherheit bietet, muss ich mich für eine andere Lösung entscheiden. – jstuardo