![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Access Sicherheit
Ich habe in einer Access-Anwendung (mit Delphi 2005) aus Sicherheitsgründen alle Standarduser gelöscht und einen neuen hinzugefügt (hier Test) mit allen Rechten. Ferner schütze ich die Datenbank mit einem Passwort (hier Test54). Über ADOConnection verbinde ich danach die Datenbank. Das Passwort erscheint dabei (ach wie schön) als ******.
Nun kompiliere ich das Ganze. Danach öffne ich die EXE mit einem Editor und suche nach ADOConnection. Und jetzt kommt’s: Unter ADOConnection sehe ich wunderbar alles im Klartext User ID=Test Database Password=Test54 Da es sich bei dieser Anwendung um sehr sensible Daten handelt, genügt mir also dieses Vorgehen nicht. Hat dazu jemand einen anderen Vorschlag? Besten Dank |
Re: Access Sicherheit
Wie wäre es mit dynamischen Zusammenbau des Connection-Strings und Verschlüsselung/Verschleierung des Connection-Strings. Damit machst Du es einem Angreifer ein klein bischen schwerer.
Aber wirklich sicher bekommst Du es unter einem Windows-System nicht hin. Dazu gibt es zu viele Angriffspunkte. Allein der Passwortschutz von Access (jedenfalls bei älteren Versionen) kann mit diversen Tools aus dem Internet problemlos geknackt werden. Also müsstest Du noch weiter "Features" einbauen: - Verschlüsselung der Daten - Verhindern das Debugger bei laufenden Programm mitlaufen - Keine Lauffähigkeit in Virtualisierungssystemen wie VMWare oder VirtualPC - WinAPI-Hooks erkennen |
Re: Access Sicherheit
Jain. Nicht wirklich ernsthaft. Aber zumindest ein bisschen.
Du speicherst Das Kennwort ja offenbar 'hardcoded' in den Properties der Connection. Weise dem Property den Wert einfach erst zur Laufzeit zu, und zwar nicht aus einem identischen String, sondern verschlüssele den String vorher. Beispiel:
Delphi-Quellcode:
Du kannst hier ein recht einfaches Verfahren nehmen. Ergebnis ist, das das Passwort nicht mehr im Klartext in Deiner .exe abgelegt wird. Es ist zwar auch nicht wirklich sicher, aber wenn jemand an die Daten dran will, dann jagt er eh das Access - File durch einen Decrypter bevor er Deine .exe disassembliert und analysiert. Geht einfach schneller ;-)
var
adopw: string; begin adopw := 'wrldbrmpft'; ADOConnection.Password := entschluessele(adopw); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz