0
votes

Comment empêcher l'accès au site Web à partir d'une adresse IP différente avec ASP.NET

Je voudrais créer une couche de sécurité. Par exemple: xxx

Eh bien, je voudrais vérifier une adresse IP et si elle est différente de l'utilisateur enregistré et connecté que de rediriger vers sessioninactive.aspx page.

est il est possible de faire dans global.asax?


2 commentaires

s'il est différent pour l'utilisateur enregistré et connecté , que se passe-t-il si l'IP de l'utilisateur enregistré change?


Normalement, l'utilisateur ne modifie pas l'adresse IP pendant les achats, en utilisant l'application ou la lecture d'un jeu en ligne. D'une manière ou d'une autre si l'adresse IP change que nous pouvons mettre fin à la session de la sécurité de l'utilisateur et que l'utilisateur devra se connecter à nouveau.


3 Réponses :


1
votes

Je ferais cela à l'endroit où je vérifie l'utilisateur. Par exemple sur la page de connexion. Vous pouvez simplement faire quelque chose comme ça: xxx

puis vous pouvez comparer votre SEESION ["ipaddress"] (vous pouvez remplir cette variable de session de la même manière) avec SUSERHOSTADDRESS.

Je ne sais pas ce que vous voulez dire avec imitant session_id? Je ne fierais pas aux cookies pour gérer l'état authentifié. Je pense que l'aspect important est que votre login est sécurisé. Mot de passe crypté. Je vérifiais toujours un cookie de session contre la SessionId utilisée réelle et si elles ne correspondent pas, je suis suspecte (peut écrire du code pour faire quelque chose à ce sujet).

Vous pouvez rencontrer un problème si l'utilisateur utilise un proxy qui change l'adresse IP pendant une Séion. A vu quelque chose comme ça dans mes fichiers journaux.

J'espère que cela aide.


4 commentaires

Je pense à ASP.NET Cookie a ASP.NET_SESSION_ID. Quelqu'un peut voler et essayer de l'utiliser ou si quelqu'un connaît le nom d'utilisateur et le mot de passe de l'utilisateur ciblé. Essayer d'obtenir une adresse IP sur Session_Start. Ainsi, si les modifications de l'adresse IP ne peuvent pas se connecter au système. Parce que nous avons une session active sur le système? Il suffit de besoin d'un petit tour pour cela.


Vous pouvez contrôler la durée de vie d'ASP.NET_SESSION_ID. J'utilise habituellement les paramètres par défaut dans le web.config, qui est 20 min. Des sites non commerciaux que je fais plus longtemps. Après cela, la session expire. Nouvelle connexion requise. J'ai également défini la sessionID dans un cookie (pas l'ASP.NET One un supplémentaire). Ensuite, je peux lire ce cookie et comparer avec la sessionID active. Vous pouvez donner au cookie n'importe quel nom et vous pouvez le crypter aussi. Il est difficile de deviner ce que cela pourrait signifier. Utilisez httponly = true lorsque vous créez un cookie. Ajoute une autre couche de sécurité. Heureux que vous me donniez un vote pour ma réponse initiale. Merci.


Merci j'utilise déjà httponly = true pour le cookie asp.net par défaut. Je pense juste à refuser la connexion de différentes adresses IP en même temps et à l'homme dans les choses du milieu en ce moment. Je vais évaluer votre autre suggestion.


Je suppose que vous avez défini des exigencesL = "vrai" dans le web.config aussi. Cela va crypter le cookie. Pensée intéressante sur plusieurs connexions en même temps. Besoin de penser à cela aussi maintenant.



1
votes

Ajoutez les méthodes suivantes dans global.asax

Enregistrer l'adresse IP à la session sur session_start: xxx

sur chaque requête, voir si la demande IP est identique à celle enregistrée en session: xxx


3 commentaires

Merci, je peux obtenir une adresse IP avec ce code mais chose est que je prévois de vérifier une adresse IP sur session_start si c'est possible. Imaginons que nous savons que l'utilisateur est dans le système et que vous avez une session active. Et une demande inconnue provient d'une autre adresse IP. Nous pouvons penser à quelqu'un connaître le nom d'utilisateur et le mot de passe de cet utilisateur. Ou il y aurait une session volée via un cookie


Essayez la solution mise à jour, cela devrait résoudre le problème.


merci rashid. J'ai été défini l'adresse IP dans session_start mais je n'ai pas imaginé à propos de Application_ACQuireRequestState. J'espère que votre solution aidera aux autres.



2
votes

Cela fera le travail à l'intérieur global.aSax: xxx


0 commentaires