Sécurisation d'un count de database SQL pour un site ASP.Net

J'essaie de sécuriser une database MSSQL pour notre site Web .Net.

Je voulais séparer la database en différents schémas afin d'avoir un schéma comme 'Account' qui avait des informations personnelles et un schéma comme 'Public' qui avait des données de contenu public generics.

Chacun de ces schémas serait accédé en utilisant différents counts d'users SQL et ils auraient chacun besoin de leur propre DBML car ils auraient besoin de strings de connection séparées (nous utilisons LINQtoSQL).

Mon collègue prétend que puisque nous avons ces deux counts dans notre web.config, cette design n'est pas plus sûre que d'utiliser un seul count SQL qui a access à toute la database. Il n'est pas nécessaire de séparer les schémas puisque nous n'utilisons pas l'authentification basée sur Windows.

Donc, ma question est qui a raison? La séparation de la database en schémas serait-elle plus sécurisée? Ou est-ce une perte de time puisque les deux counts SQL seraient situés dans le web.config (même si crypté)?

Votre collègue a tort à un niveau et à droite à un autre.

Briser la database dans les schémas comme vous le proposez aidera les pirates capables de find des choses comme les erreurs d'injection SQL. Si vous êtes diligent dans la définition de vos permissions, c'est …

Cependant, scinder le schéma comme ceci n'offre aucun avantage supplémentaire si quelqu'un parvient à entrer dans le système de files réel et peut red le web.config.

Vous devez penser à toutes les couches possibles.

Si vous ne l'avez pas déjà fait, consultez cette excellente ressource:

http://msdn.microsoft.com/en-us/library/ms998372.aspx

Aussi, essayez googling stocker vos strings de connection dans le registre. Il y a quelques bonnes references pour cela, qui vous aideront à vous protéger si quelqu'un entre dans le système de files et peut lire votre file web.config.

Enfin, n'oubliez pas de chiffrer votre web.config …

Séparer les counts réduira le risque dans le cas où le vector d'attaque est l'injection SQL. L'attaquant ne pourra faire que ce qui est autorisé par les privilèges de la session pour continuer l'injection. On peut supposer que seul un attaquant authentifié peut utiliser la session Account comme vector d'injection, il sera donc détruit car il peut être découvert à partir des logs qui l'ont fait. Que cette séparation soit une mitigation efficace d'une menace, cela dépend beaucoup des informations que vous avez omises, et surtout de la manière dont vous séparez l'access aux deux zones de votre code.

Avoir les deux strings de connection dans le web.config signifie que si le pool ASP lui-même est compromis, un attaquant peut utiliser les deux strings.

Je présume que les strings sont cryptées, voir Chiffrement des informations de configuration à l'aide de la configuration protégée . De cette façon au less les informations de connection ne sont pas perdues si web.config est divulgué.

Eh bien, si vous cryptez la section dans laquelle se trouvent les counts, je ne vois pas quel serait le problème. Le seul problème pourrait être sur le pool de connection, il va fragmenter le pool en 2 c'est tout.