Question

J'ai un c # application Winform qui utilise SQL 2005 Express. L'application crée des jeux-questionnaires en mathématiques et en lecture et est commercialisé aux parents d'enfants d'âge scolaire. Les parents, acheter et télécharger des fichiers SQL contenant des questionnaires de mon site Web et les installer dans l'application (qui est installé sur l'ordinateur de leur enfant).

J'ai deux problèmes de sécurité SQL:

(1) Certains enfants ne veulent pas les jeux-questionnaires à apparaître sur leur ordinateur, ils peuvent essayer de (a) supprimer la base de données SQL ou (b) désactiver l'application en modifiant les valeurs dans la base de données.

Il me semble que tout le monde avec SQL Server Management Studio Express peut facilement modifier le contenu de la base de données.

Par conséquent, ce qui peut être fait pour empêcher cela (autre que recommander aux parents qu'ils ne laissent pas leurs enfants utilisent un compte administrateur)?

(2) Mon seul chiffre d'affaires sera la vente des jeux-questionnaires, donc je veux protéger ces données d'être copiées et partagées. Comment puis-je faire cela étant donné (a) que les fichiers doivent être téléchargés à partir de mon serveur à l'ordinateur de l'enfant, puis installé et (b), puis une fois installés, ils sont juste sur l'ordinateur résident de l'enfant.

Il me semble que tout le monde avec l'Assistant de publication de base de données SQL peut facilement copier le contenu de la base de données.

Est-il possible de permettre que ma demande d'accéder à la base de données SQL? Est-il possible de limiter tout le monde d'y accéder (personnes même en utilisant des comptes d'administrateur Windows)?

Actuellement, le script d'installation pour mon application crée une nouvelle instance du serveur SQL 2005 Express juste pour mon application et il utilise l'authentification Windows.

J'ai lu plusieurs messages de sécurité SQL ici sur Stackoverflow et ailleurs, mais je ne suis pas encore en mesure de comprendre.

Était-ce utile?

La solution

D'un point de vue hacker bancal, les parents sont vissés. En effet, leurs enfants ont un accès physique à l'ordinateur. En théorie, ils peuvent attaquer dans tous les sens.

Maintenant, nous allons aller avec ce qui est plus probable.

Vous identifié que ne donnant pas l'accès administrateur enfants fait une grande différence. Mais si vous dites cela est hors de portée de la plupart des familles, est donc SQL Management Studio. Vous pouvez faire un pari que les enfants ne vont pas aller chercher ce et l'installer.

Cependant, à la fin, vous seriez probablement mieux avec une bonne vieille obscurcissement. Au lieu d'utiliser quelque chose comme SQL Management Studio, où il existe des outils librement disponibles là-bas pour modifier et empêcher ces jeux-questionnaires d'apparaître ou quoi que d'autres attaques sont disponibles, vous créez vos propres formats de fichiers et nous espérons que la plupart des enfants abandonnent quand ils voient binaire charabia.

S'ils vont renoncer à cela, beaucoup pourrait renoncer à SQL Express. Cela dit, les enfants sont assez débrouillards et certains pourraient être disposés à suivre des instructions étape par étape ils ont cherché sur Google pour vaincre votre logiciel.

On dirait que vous déployez ces jeux-questionnaires SQL Express instances ONTO qui sont sur des machines pas sous votre contrôle. Ils ne sont pas vos machines plus.

Je ne veux pas dire « vous ne pouvez pas faire ce que vous demandez » mais vous demandez comment empêcher quelqu'un d'utiliser des outils d'administrateur pour vaincre votre logiciel. Je pense que ma réponse est « vous ne pouvez pas ». Vous devez revoir votre conception ou tout simplement aller avec l'idée que la plupart des enfants ne vont pas jusqu'à présent.

Autres conseils

Vous pouvez utiliser le chiffrement sur vos données de jeu-questionnaire.

Crypter et Décrypter une chaîne

Le défaut c'est votre application devrait avoir la clé de chiffrement / déchiffrement dans son code, si quelqu'un pouvait encore y avoir accès grâce à un outil de recompilation ou quelque chose comme réflecteur.

La vraie réponse est que la protection de votre demande de tout est presque impossible. Il suffit de penser aux énormes entreprises et leurs techniques de protection, Microsoft, Adobe, etc ... ils ont tous un problème avec le piratage.

En outre, si votre application est assez bon pour beaucoup de gens à pirater, vous aurez très probablement un bon nombre de ventes légitimes.

Jusque-là, je ne vous inquiétez pas trop, et juste prendre quelques petites précautions qui ne pas interférer avec votre flux de travail trop.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top