2010-09-10 3 views
2

J'ai un site ASP.NET MVC avec une application d'administration de site privé sécurisée avec l'autorisation ASP.NET SQL. Je dois ajouter un identifiant pour le site public afin de permettre aux visiteurs de s'inscrire à un compte. Je pense que je devrais créer un espace de stockage totalement séparé pour le site public, plutôt que d'étendre la base de données utilisateur existante et de compter sur des rôles pour empêcher les utilisateurs publics de se retrouver dans le back-office. Y a-t-il une raison de ne pas le faire?Devrais-je étendre la sécurité ASP.NET pour un site public?

Répondre

1

Oui il y a. Vous pouvez isoler la base de données privée de la base de données publique. Créez deux comptes d'utilisateurs de base de données, assurez-vous qu'ils n'ont accès qu'à la base de données dont ils ont besoin. Les applications publiques et privées utiliseront différents comptes. Ensuite, verrouillez les comptes de base de données pour vous assurer qu'ils ne disposent que des droits nécessaires au fonctionnement de l'application Web. (Je ne sais pas quelle base de données vous utilisez.) Si vous utilisez ms-sql assurez-vous qu'ils n'ont pas accès à xp_cmdshell, si vous êtes sous mysql assurez-vous que le compte n'a pas de privilèges FILE. Si une vulnérabilité SQL Injection est trouvée dans la partie publique de votre site, alors ils pourront accéder à cette base de données, laissant votre site privé non affecté par l'attaque.

+0

Hrm, je ne sais pas à ce sujet. Une partie de moi dit, si le site est vulnérable à l'injection SQL, j'ai des problèmes beaucoup plus importants, et c'est juste un contrôle des dégâts. – Paul

+0

@Paul vous devriez essayer d'exploiter les vulnérabilités d'injection sql, et peut-être que cette partie disparaîtra. C'est ce qu'on appelle la défense en profondeur, vous pourriez ne pas être en mesure de trouver tout ce que vous devez planifier pour le pire. C'est pourquoi vous hash mots de passe. Si vous avez correctement configuré vos permissions sql, le plus qu'un attaquant peut obtenir est un select supplémentaire. L'exécution de plusieurs requêtes et l'accès à cmd.exe ne devraient pas être possibles, mais c'est par défaut. – rook

+0

Ah, "Défense en profondeur" est exactement ce que je cherchais. Donc, c'était mon plan original mais maintenant j'ai l'impression que je peux le défendre intelligemment. Après un peu de lecture, il semble que Défense en profondeur se réfère à la protection contre différents vecteurs d'attaque, pas la même attaque pénétrant la première couche de défense. Je dirais que la raison pour laquelle vous hachez les mots de passe est principalement d'empêcher les employés malveillants de voler les comptes des utilisateurs - mais cette même logique fonctionne pour mon cas. – Paul

0

Le temps et potentiellement l'argent seraient une raison. Sinon, si vous avez le temps. Selon le besoin, ne sachant pas exactement les problèmes en cours, il pourrait également ajouter beaucoup de complexité ...

HTH.

0

Avez-vous déjà un utilisateur avec plus d'un rôle? Pourriez-vous finir par stocker le même utilisateur dans plus d'une base de données? Si c'est le cas, je garderais vos utilisateurs dans une base de données unifiée.

Questions connexes