2009-10-26 7 views
1

Existe-t-il un moyen fiable de déterminer l'origine d'un utilisateur dans une application ASP.NET? Nous avons une application Web qui est liée à deux endroits différents. Les deux liens sont sur des domaines distincts, et ils doivent dicter certaines autorisations utilisateur dans cette application. Voici ce que je l'ai essayé jusqu'à présent ...Comment savoir d'où vient l'utilisateur?

  • Request.UrlReferrer à l'aide (qui est l'en-tête HTTP Referer). Cela renvoyait toujours une chaîne vide. Je crois que c'est parce que les liens hypertexte utilisent Javascript pour lancer une fenêtre contextuelle. Sur la base de mes recherches, l'agent utilisateur fournit cet en-tête HTTP sur les hyperliens standard. Les popups Javascript sont une histoire différente (évidemment).

  • Une chaîne de requête simple pour indiquer le référent. Ce n'est pas vraiment une option car nous avons besoin de quelque chose qui n'est pas si facile à contourner (plus sûr).

Des idées? Je comprends que dans le grand ordre des choses, cela pourrait avoir une meilleure conception/structure globale. S'il vous plaît ne postez pas une réponse suggérant que je re-design tout, parce que ce n'est pas une option.

+0

Quels sont les paramètres de votre serveur Web? type d'authentification? accès anonyme, etc.? – davek

Répondre

5

Il n'existe aucun moyen fiable de savoir d'où vient l'utilisateur et il ne s'agit pas seulement d'une limitation ASP.NET, mais de toutes les applications Web en général. Le référent url peut être facilement usurpé, il n'est donc pas fiable. Je pense que la meilleure option pourrait être un paramètre d'URL crypté, ou un cookie si vous préférez.

Les deux pages doivent donc correspondre à des clés privées communes.

  1. Page1 utilisera la clé pour chiffrer son adresse et le transmettre à Page2
  2. Page2 vérifiera la présence de ce paramètre et essayer de le décrypter avec la même clé privée utilisée pour chiffrer
  3. Si cette réussit cela signifie que Page2 sera capable de déterminer qui l'a appelé, sinon, les données ont été falsifiées
+0

Cela ressemble à la paille finale. Il est temps de commencer! Merci de votre aide. –

1

Sans le navigateur passant un référant ou en utilisant la chaîne de requête comme décrit, il n'y a aucun moyen de savoir.

+0

J'avais peur de ça ... –

0

Une autre option consiste à avoir deux pages de destination différentes sur l'application ASP.NET. Les pages de destination peuvent définir les options de sécurité, puis rediriger vers une page d'accueil commune. C'est un peu plus sécurisé que l'option querystring. Vous pouvez également placer une image de 1 x 1 pixel sur les sites référents extraits de votre site d'application ASP.NET. Le référent doit être passé au script et vous pouvez ensuite définir un cookie sur la machine de l'utilisateur que vous pouvez ensuite référencer quand ils atteignent la page d'accueil de l'application.