2009-02-22 6 views
0

Si j'ai un petit microsite et sur la première page je veux m'assurer que l'utilisateur ne peut pas accéder à une page non sécurisée entre (par exemple 2 ou 3), serait le meilleur moyen de mettre en œuvre cela? La page suivante ne peut être vue que si l'utilisateur définit un certain élément dans une liste déroulante.Utilisation de cookies pour empêcher l'accès à certaines pages non sécurisées d'un site

Ma première pensée est les cookies. Si l'utilisateur accède à la deuxième page et que la valeur du cookie est null, il existe une redirection vers une page d'échec. Si l'utilisateur choisit la bonne valeur, la valeur du cookie est définie comme étant un succès. Cette approche fonctionnerait-elle si j'envoyais un lien sur la deuxième page à un ami sur un autre PC?

Y a-t-il un meilleur moyen?

+0

Je n'ai pas compris - vous voulez que vos utilisateurs voient la première page et placent quelque chose avant de voir le 2ème, non? Mais si le lien est envoyé à un ami, voulez-vous que l'ami voit la deuxième page tout de suite ou reçoive une page d'erreur? –

Répondre

0

Bon marché, sale et sale? Le cookie ou la valeur de session fonctionnent. Ni sont fiables à long terme.

Si vous faites en sorte qu'un utilisateur ne puisse voir certaines informations qu'après avoir sélectionné une liste déroulante, vous pouvez le masquer dans un panneau et n'afficher ce panneau que lorsque la liste déroulante est sélectionnée. C'est le plus utile si cela ne vous dérange pas que l'utilisateur doive sélectionner à partir de la liste déroulante à chaque fois. Vous pouvez également l'utiliser avec un cookie si vous souhaitez que l'utilisateur puisse voir les données sans sélectionner le menu déroulant. Caché dans la même page (déroulant dans un panneau, info dans un autre), vous pouvez le garder caché perpétuellement. Si cela doit être une deuxième page, vous pouvez également mettre la page dans un autre répertoire, puis y placer un fichier web.config qui nécessite une connexion. Vous pouvez ensuite le faire comme une "connexion" par "se connecter" à chaque personne qui répond. Vous finissez par utiliser les bits d'adhésion, mais ils ne sont connectés à rien.

+0

C'est pire, non? Si vous ne le cachez pas, cela signifie que la propriété Visible du contrôle est fausse. Si vous vous cachez simplement via CSS, l'utilisateur doit juste voir la source pour voir ce qu'il n'est pas censé voir. –

+0

Comme il s'agit d'un formulaire ASP.NET, je parle de Panel1.Visible = true; Panel2.Visible = false. Pas CSS. Il pense plus aux formes de fenêtres qu'ASP.NET, mais c'est le modèle que MS nous a fourni. Vous retournez ensuite le visible lorsque le formulaire est soumis. Maintenant, ce n'est pas très convivial pour AJAX. ;-) –

0

Les cookies ne sont pas une bonne idée pour cela pour une raison spécifique. Ils sont sous le contrôle de l'utilisateur, pas vous.

Si un utilisateur a désactivé les cookies (globalement ou tout simplement pour votre site), ils ne seront pas en mesure d'obtenir à la page 2 maintenant importe combien de fois ils ont lu la page 1.

En outre, si ils savent ce que contient votre cookie (c'est-à-dire qu'il n'est pas crypté), ils peuvent facilement le créer eux-mêmes ou transmettre la méthode à un ami pour qu'ils le créent.

En ce qui concerne votre question sur la possibilité d'envoyer le lien de la page 2 à quelqu'un d'autre, les cookies appartiennent à l'ordinateur. Cela signifie que le "quelqu'un d'autre" n'aurait certainement pas le bon cookie pour voir correctement la page 2: ils auraient une erreur.

Nous avons mis en place un système similaire (il y a de nombreuses années, il y a peut-être de meilleures façons de le faire maintenant). Cela impliquait de stocker une clé "unique" spéciale lors de la livraison de la page 1 à une adresse IP. Les liens dans cette page 1 ont été modifiés pour inclure cette clé comme argument de sorte que, lorsque vous avez demandé la page 2, la clé a également été envoyée.

Les clés avaient une durée de vie de 30 minutes (configurable mais nous avons fini à 30 minutes). Pour que nous puissions livrer une page 2, la demande devait provenir de la même adresse IP et avoir la bonne clé.

Ceci empêchait la transmission de liens vers d'autres endroits et assurait que les liaisons avaient des durées de vie limitées.

Que ce soit une solution viable pour vous est une question que vous seul pouvez répondre. Je sais que nous avons reçu quelques plaintes de personnes qui ont acheté la page 1, puis sont allées prendre un café. Quand ils sont revenus, leur tentative d'accéder à la page 2 a échoué. Nous avons corrigé ceci en les redirigeant simplement vers la page 1 avec un message d'erreur approprié indiquant que leur clé avait expiré.

Pas parfait mais, puisque les utilisateurs ont été éduqués pour expliquer pourquoi cela se passait, ils ont compris sa nécessité.

0

Si je comprends bien votre question, le lien que vous envoyez à votre ami ne fonctionnera pas car le cookie ne sera pas stocké dans la mémoire de son navigateur ou sur sa machine. Cela serait également vrai si vous stockiez la valeur dans Session car ils créeraient leur propre nouvelle session lorsqu'ils ouvriraient le lien. Pour obtenir ce type de comportement lors du partage de liens, vous devez transmettre la valeur dans une chaîne de requête, c.-à-d. Lorsque vous sélectionnez l'option souhaitée à la page 1 et sous-la forme, la publication prend l'option sélectionnée. option ajoutée à l'URL en tant que valeur de chaîne de requête.

Questions connexes