2010-01-04 6 views
0

Je suis en train de convertir notre application de base de données d'entreprise de VB en ASP.NET. C'est à peu près ma première application ASP.NET, et j'avais une question sur la sécurité. Je voudrais que certains utilisateurs aient la possibilité d'ajouter ou de modifier des données, tandis que d'autres utilisateurs peuvent uniquement afficher et imprimer des rapports. Maintenant, si je comprends bien, dans ASP.NET, je peux utiliser l'authentification basée sur des formulaires pour restreindre l'accès à certaines pages, mais ce que j'aimerais vraiment faire, c'est utiliser la même page web pour non seulement voir les données, mais aussi éditer il (en utilisant une vue de la grille). Je ne vois pas comment je peux le faire en utilisant l'authentification basée sur des formulaires sans avoir des pages Web distinctes (mais similaires) dans différents dossiers, chacun avec son propre niveau de sécurité. Je suppose que je pourrais toujours utiliser la même page Web, puis vérifier les rôles des utilisateurs pour déterminer si je devrais activer le bouton «modifier» ou non. Est-ce une bonne pratique de programmation (et commune)?Sécurité ASP.NET

Merci

Répondre

1

Vérification de l'appartenance à un rôle est un moyen accepté de le faire. Cependant, ne vérifiez pas seulement lorsque vous affichez le bouton, vérifiez aussi pendant la réponse à l'événement qu'il se déclenche, juste au cas où quelqu'un essaye de contourner la validation d'événement.

1

User.IsInRole() est ce dont vous avez besoin. Comme mentionné, vérifiez ceci à chaque étape - les utilisateurs peuvent simuler n'importe quel type de réponse HTTP, donc chaque méthode côté serveur a besoin de vérifications de sécurité.

Ne pas simplement vérifier si activer ou non ... Vous devez également vérifier quand on clique sur le bouton d'édition.

0

je mettre en œuvre ma propre coutume RoleProvider (MSDN Article). Et puis avoir différents rôles qui décrivent les différents niveaux d'accès sur votre application, et comme blowdart dit vérifier lorsque les boutons, les panneaux sont affichés si l'utilisateur a accès ou non à cette ressource. Puis-je vous recommander d'utiliser la surveillance de SQL Profiler (ou similaire) lorsque vous testez la page si vous utilisez une base de données? Vous serez surpris du nombre d'appels que la base de données obtient pour un chargement de page apparemment trivial.

Veuillez également vérifier les paramètres de sécurité dans ASP.NET. Ça vaut le coup d'oeil.

Vive.

Questions connexes