2009-05-11 6 views
2

J'ai un programme en C# qui utilise une base de données MS Access et j'utilise OleDb pour se connecter et faire des requêtes sur cette base de données. Mon problème est que j'ai des informations sensibles dans la base de données et je ne veux pas qu'il apparaisse comme une base de données Access. J'ai changé l'extension, mais quand je l'ouvre, il crée toujours le fichier de verrouillage .ldb utilisé par Access. Je veux que la base de données ne crée pas ce fichier de verrouillage.Ouvrir MS Access avec la chaîne de connexion OLEDB et ne pas avoir accès créer le fichier de verrouillage .ldb

J'ai lu beaucoup de messages sur le problème et il semble que si j'ouvre la base de données en mode exclusif, il ne créera pas ce fichier .ldb. Cependant, jusqu'à présent, je n'ai trouvé aucune chaîne de connexion pour OleDb qui me permet de spécifier un accès exclusif à la base de données. L'objet OleDbConnection en C# n'a pas non plus de membre "Mode", donc il est hors de question de définir un accès exclusif de cette manière.

Si quelqu'un a des chaînes de connexion qui peuvent ouvrir la base de données en mode exclusif, ou si quelqu'un connaît un autre moyen d'éviter de créer le fichier de verrouillage .ldb dans Access, l'aide serait très appréciée.

+0

Qu'essayez-vous d'accomplir avec ceci? Si c'est vraiment si sensible alors la sécurité à travers l'obscurité n'est probablement pas une bonne idée ici. Si j'essayais de fouiner, je supposerais probablement que le fichier était une base de données Access. – BobbyShaftoe

+0

Vous semblez avoir l'impression que le fichier LDB lui-même constitue une sorte de violation de la sécurité. Il n'y a pas de données stockées dans le fichier LDB provenant de votre fichier de données, seulement des métadonnées sur le verrouillage. Le fichier LDB n'est en aucun cas une faille de sécurité. Le fichier Jet MDB lui-même est certainement vulnérable, mais c'est la nature d'une base de données basée sur des fichiers. –

+2

Si vous pensez que la modification de l'extension d'un fichier protégera les données sensibles, détrompez-vous! – onedaywhen

Répondre

3

Je recommanderais d'utiliser SQLite ou une autre option de non-accès si vous voulez éviter les fichiers de verrouillage.

Essayer d'éviter les fichiers de verrouillage est difficile au mieux. Même si vous ouvrez le fichier en mode exclusif, JET crée ces fichiers à certains moments.

Si vous essayez de stocker des données sensibles et que vous souhaitez "masquer" le type de fichier, une autre bonne option est VistaDB. C'est une base de données de fichier unique, mais permet le cryptage complet de la base de données. Ce serait probablement une meilleure approche que de simplement essayer de masquer le fait que vous utilisez JET.

+0

OP ne pose pas de questions sur les alternatives MSAccess ... – Goldorak84

+0

@ Goldorak84 Non - mais parfois la "bonne" réponse est de décrire que la question est imparfaite en premier lieu. –

+0

En tant qu'utilisateur MSAccess (à cause du code existant), il est parfois difficile d'obtenir des réponses de qualité (à de bonnes questions) parce qu'il est plus facile de critiquer Access que d'essayer de trouver une solution compatible avec les restrictions OP. – Goldorak84

0

J'ai plusieurs bases de données avec le drapeau exclusif, et je continue d'obtenir des fichiers .ldb créés chaque fois que j'en ouvre un. Si vous êtes vraiment inquiet pour la sécurité, il est temps de passer à une base de données «adulte».

3

Vous ne pouvez pas vraiment cacher qu'il s'agit d'une base de données Access. N'importe qui peut ouvrir le fichier dans un éditeur hexadécimal (ou même simplement un bloc-notes) et voir une chaîne comme "Standard Jet DB" (Office 2000/XP/2003) ou "Standard ACE DB" (Office 2007) les regarder. Même s'ils ne savent pas ce que cela signifie, Google leur dira assez tôt. Vous utilisez une base de données moins commune, mais ils auront des faiblesses similaires. Si vous voulez vraiment la sécurité, vous devrez chiffrer le fichier de base de données et utiliser un moteur qui vous permettra de garder une version décryptée en mémoire (IIRC sqlite le supporte, ou le sera bientôt) ou utiliser un moteur qui prend en charge le cryptage de manière native. Même alors, vous pouvez avoir des problèmes si le bélier est paginé sur disque ou si un autre processus "renifle" le bélier de votre application.


Une mise à jour en retard, mais mon attention a été attirée en arrière aujourd'hui et je voulais ajouter que à peu près tout, mais l'accès vous demandera de distribuer le moteur avec l'application. Vous devez également veiller à ce que les fichiers du moteur ne le distribuent pas. L'accès obtient une passe car le moteur fait déjà partie des fenêtres. Vous pouvez également essayer quelque chose qui est open source, vous pouvez donc le recompiler dans votre fichier d'application principal.

+0

Impossible d'accéder au cryptage? – JeffO

+0

Je ne pense pas que le support soit intégré, mais je peux me tromper. –

0

Installez SQL Server 2008 Express, utilisez l'assistant de migration dans Access, pointez sur votre instance Express.

-2

Vous pouvez également utiliser Sql Server Compact pour cela. C'est gratuit et fait partie de Visual Studio. Il est activement utilisé par Microsoft dans un certain nombre de produits, y compris Windows Live.

Questions connexes