2011-03-23 6 views
0

Duplicate possible:
Max length for client ip addressutilisateurs par IP Blocking Adresse

je besoin d'un moyen de bloquer les utilisateurs à partir de leur IP si nécessaire. Quelle est la meilleure façon d'aborder cela? Puis-je utiliser Request.ServerVariables ["REMOTE_ADDR"] et stocker l'adresse IP sous la forme d'une chaîne dans la base de données? Quelle longueur serait appropriée pour le varchar?

Merci

+1

Cela dépend. Supportez-vous IPv6? –

+0

Je ne suis pas vraiment sûr, je suis avec discountasp – Prabhu

+0

Vous devriez savoir que beaucoup de gens sont derrière un routeur ces jours-ci, bloquant ainsi une adresse IP bloquera tout le monde derrière le routeur AFAIK. –

Répondre

0

Vous pouvez soit stocker IP en tant que varchar de longueur 16 ou vous pouvez stocker seul entier b1 + b2 * 255 + b3 * 255^2 + b4 * 255^3 b1 à b4 sont des champs de ip, comme b1.b2.b3.b4 Vous pouvez utiliser un autre contrôle, mais il n'y a pas de point de stockage Long IP comme chaîne.

+3

Cela ne répondrait pas à IPv6. –

+0

À droite, mon mauvais, mais une somme de contrôle serait mieux que ip entier, cela aurait une longueur constante. – Sebi

1

Nous avons fait la même chose dans l'une de nos applications et l'approche que nous avons adoptée consistait à créer un HttpHandler personnalisé qui était connecté à l'événement Application_BeginRequest.

A l'intérieur du gestionnaire, nous avons saisi l'adresse IP de la demande en faisant HttpContext.Current.Request.UserHostAddress, puis effectué une vérification par rapport à notre liste d'adresses IP bloquées. Les adresses IP bloquées sont toutes stockées dans la base de données, mais nous conservons également une copie en mémoire cache dans le serveur pour éviter les trébuchements dans la base de données à chaque requête.

Il y a un très bon article sur MSDN sur la création d'un HTTP personnalisé Module Walkthrough: Creating and Registering a Custom HTTP Module

Pour ce que ça de valeur que nous stockons Les IP comme des chaînes dans la base de données, mais il y a quelques bonnes informations sur le meilleur format à utiliser dans la messages déjà ajoutés.