*.mdb mit Passwort schützen

18/04/2009 - 09:25 von Michaela Meier | Report spam
Hi,

Ist es möglich, aus C# heraus einer access-Datenbank ein Passwort zu
verpassen (und ggf. wieder zu löschen)?
Und zwar unabhàngig von Windows-Accounts/Usern.
Einfach nur ein schönes altmodisches Paßwort. Im optimalen Falle sogar
eine Passwort-Liste, so daß ein Master-Passwort im Falle eines
handelsüblichen Gedàchtnisverlustes immer noch zur Datenrettung
herangezogen werden kann.

Theoretisch könnte ich auch einfach die Software mit einem Paßwort
schützen, denn ich bezweifle, daß den potentiellen Usern der Unterschied
zwischen Programm und Daten ausreichend klar ist und daß man die Daten
auch anders auslesen könnte.

Allerdings zöge ich ein Paßwort auf Datenbank-Level vor, da ich davon
ausgehe (die Software unterstützt dieses sogar), daß die Daten zwischen
mehreren Rechnern hin- und her kopiert werden.

Es sind keine Hochsicherheitsdaten und das Login soll nur einen gewissen
Schutz gegen "ach, gucken mer ma schnell, was XY so auf'm Rechner hat"
bieten.

Hat jemand Tips oder Gegenvorschlàge? :-)

Danke
 

Lesen sie die antworten

#1 Peter Götz
18/04/2009 - 10:27 | Warnen spam
Hallo Michaela,

Ist es möglich, aus C# heraus einer access-Datenbank
ein Passwort zu verpassen (und ggf. wieder zu löschen)?



Eine Access.mdb kann auf zwei unterschiedliche Arten
geschützt werden.

1.) Mit Hilfe einer der *.mdb zuzuordnenden System.mdw.
Hiermit können mehrere, unterschiedliche Benutzer-
kennungen/Passwörter vergeben werden. Mit der
*.mdb muss auch immer eine passende System.mdw
geliefert werden.
Unter der Voraussetzung, dass die *.mdb mit einer
System.mdw assoziiert ist kann via SQL-Statement
ein Passwort für einen in der System.mdw eingetragenen
Benutzer geàndert oder neu hinzugefügt werden:

SQL-String:
ALTER USER Benutzer PASSWORD NeuesKennwort AltesKennwort


2.) Mit einem einfachen internen Datenbankkennwort.
Hierzu ist keine zusàtzliche System.mdw erforderlich.
Es wird einfach ein Passwort vergeben und nur mit
diesem Passwort im Connectionstring làsst sich die
so geschützte *.mdb spàter wieder öffnen.

SQL-String:
ALTER DATABASE PASSWORD NeuesKennwort AltesKennwort

Connectionstring zum spàteren Öffnen einer mit internem
DB-Kennwort geschützten *.mdb im geteilten (Mehrbenutzer)
Modus:

Provider = MIcrosoft.Jet.OLEDB.4.0; _
Data Source = C:\Verzeichnis\DB.mdb; _
OLE DB Services = -4; _
Mode = "Share Deny None"; _
Jet OLEDB:DataBase Password = DasDbKennwort; _
Jet OLEDB:Database Locking Mode = 1


Beide Schutzmechanismen sind nicht übermàssig sicher.
Im Internet gibt es haufenweise Tools, mit deren Hilfe sich
solche Passwörter herausfinden oder entfernen lassen.

Man kann aber z.B. die *.mdb in ein nur für eine bestimmte
Windows-Benutzerkennung freigegebenes Verzeichnis z.B.
auf einem Server legen. Die unter ihrer normalen Benutzer-
kennung ans System/Domàne angemeldeten Benutzer haben
damit erst mal keinerlei Zugriff auf eine solche *.mdb. Auch
nicht mit Access oder einem sonstigen (Hex-) Editor.
Das zugreifende Programm muss sich dann für DB-Zugriffe
per Impersonation mit eben dieser Benutzerkennung und
zugehörigem Passwort legitimieren.
Ein Beispiel für Impersonation gibt es unter

www.gssg.de -> Visual Basic -> VB.net
-> Impersonate / Benutzerwechsel

Ein Rest von Unsicherheit bleibt natürlich auch dabei,
da diese Benutzerkennung mit zugehörigem Passwort
im Programm selbst (verschlüsselt) abgelegt werden
muss.
Was welcher Benutzer mit der DB darf oder nicht darf,
kann dann immer noch durch eine Programminterne
Benutzer- u. Rechteverwaltung geregelt werden.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen