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.
Cela dépend. Supportez-vous IPv6? –
Je ne suis pas vraiment sûr, je suis avec discountasp – Prabhu
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. –