2009-08-14 12 views
1

J'écris une application Windows pilotée par base de données et l'exécutable et la base de données doivent être installés sur la machine du client.Backend de base de données sécurisée pour Windows Application que les utilisateurs ne peuvent pas pirater facilement

Y a-t-il une base de données que je peux utiliser comme backend pour mon application et dans laquelle l'utilisateur ne peut pas entrer, même si l'utilisateur utilise le même ordinateur que la base de données. Pour autant que je sache, Postgres ne fonctionnera pas pour cela, et les versions d'accès que j'ai essayées sont faciles à obtenir les mots de passe pour les mots de passe.

Mon application doit pouvoir être installée sur un ordinateur portable et être utilisable même quand il n'y a pas d'accès Internet, donc les modèles de base de données client-serveur habituels ne fonctionnent tout simplement pas.

J'ai envisagé d'utiliser un dispositif virtuel VMWare avec Postgres installé sur une version de Linux, mais cela aurait une charge système assez lourde.

Je préférerais ne pas avoir à utiliser des fichiers texte cryptés ou quelque chose comme ça.

Répondre

1

Quelle est la criticité des données? Le cryptage des données sur votre système à l'aide de la norme RSA ou AES avec une clé stockée et cryptée dans votre application éloigne votre mère et votre père. Mais si vous ne pouvez pas garder le secret sur l'application cliente, alors vous allez avoir des problèmes ici.

+0

Ce ne sont pas des données super critiques, comme des informations bancaires ou quelque chose comme ça. Je sais que je ne peux probablement pas garder quelqu'un vraiment sérieux. L'objectif principal est d'empêcher les utilisateurs de vider la base de données, de créer leurs propres applications pour s'y connecter, etc. Je pourrais encoder certains des champs dans la base de données, mais cela ne résout pas le problème d'empêcher les utilisateurs d'ajouter ou de supprimer des éléments manuellement. – user156241

+0

Ah mais c'est le cas. Vous pouvez ajouter un "sel" à chaque ligne et crypter les données. Si vous voulez vraiment être méchant, vous pouvez même chiffrer les noms des lignes et des tables, vous pouvez le faire avec un script précompilé pour avoir un mappage entre vos noms et un ensemble de noms de conception. Si vous avez du sel, vous pouvez également empêcher l'utilisateur d'ajouter ou de modifier des lignes. Vous ne pouvez évidemment pas arrêter la suppression en tant que sécurité que vous pouvez faire en tant qu'administrateur local. – Spence

2

Étant donné que les utilisateurs (ou les pirates) possèdent la machine, vous ne pouvez rien faire pour la sécuriser. Tout ce que vous essayez va tomber dans une catégorie appelée Security Through Obsecurity. Votre meilleur pari est de crypter votre base de données et essayer de cacher la clé dans un endroit obscur dans votre binaire. Comme il s'agit d'une application installée, n'utilisez pas les serveurs de base de données. Utilisez simplement une bibliothèque DB comme Postgres.

0

Deux options s'offrent à vous, en fonction de votre budget. D'abord, j'ai utilisé SQL Server Compact Edition 3.5 avec un programme .NET pour faire une base de données locale qui a été cryptée. La bonne nouvelle était que le fichier était crypté et ne pouvait être consulté que si vous aviez le mot de passe. Les mauvaises nouvelles sont bien sûr que votre mot de passe sera probablement dans votre chaîne de connexion, sauf si vous faites quelque chose comme un PRNG ensemencé pour générer le mot de passe pour vous. En outre, SSCE exige qu'il soit installé indépendamment de votre application. Si, pour une raison quelconque, l'utilisateur le désinstalle via le Panneau de configuration, votre application ne sera pas exécutée. Deuxièmement, j'ai également utilisé un produit commercial appelé VistaDB, et il prend également en charge les fichiers de base de données locaux qui sont cryptés. Il existe des fonctionnalités de comparaison de VistaDB par rapport aux autres moteurs de base de données available on their website - mais une autre chose qu'ils offrent est qu'ils n'ont pas de runtime qui doit être préinstallé - vous ajoutez simplement un autre assembly à votre distribution (ils prétendent pouvoir le lier statiquement , mais je n'ai pas essayé personnellement). Le fichier local sur le disque est également crypté avec VistaDB, et sans le mot de passe, vous ne pouvez pas accéder à la base de données sous-jacente.

Bonne chance!

Questions connexes