Question

Je dois essayer d'usurper le HTTP_REFERER qui a passé ma autre page afin que, dans la page de destination, je puisse déterminer si la requête provient du "droit". page et effectuez la logique appropriée.

  1. Comment puis-je faire cela en JavaScript (AJAX)?
  2. Puis-je faire cela dans ASP.Net?

TIA béliers

Était-ce utile?

La solution

En règle générale, vous ne pouvez pas obliger les autres navigateurs à renvoyer un faux HTTP_REFERER sans exploit, plug-in ou autre extension. Si vous souhaitez modifier la valeur envoyée par votre navigateur Web et que vous utilisez FireFox, reportez-vous à l'extension Modifier les en-têtes . .

Dans tous les cas, vous ne devez jamais vous fier à la précision de HTTP_REFERER. Il n'y a aucune garantie que HTTP_REFERER que vous recevez ne soit pas falsifié ou simplement pas envoyé.

Autres conseils

Si vous souhaitez vérifier sur la page de destination si une requête provient du " right " page, vous n'avez pas besoin d'usurper le référant. Tout ce que vous avez à faire est d’émettre la demande à partir d’une page différente. Configurez une page avec une URL différente de celle que vous considérez comme "droite". une, et émettez des demandes à partir de là, soit en cliquant sur un lien vers la page de destination, soit en insérant une image provenant de la destination.

Il a déjà été mentionné que vous ne pouvez pas vraiment usurper des choses. Mais pour clarifier, l'en-tête HTTP_REFERER est généré par le navigateur . Par conséquent, vous ne pouvez pas le contrôler côté serveur (y compris les éléments qui transmettent du javascript, qui peut être activé ou non) <. / p>

Si vous souhaitez simplement tester la réponse de votre page à certains en-têtes (comme "Referer:"), vous pouvez utiliser des outils de ligne de commande tels que curl ou wget disponibles dans la plupart des systèmes BSD et les variantes de Linux (y compris OS / X). Si vous utilisez MS Windows, vous pouvez utiliser curie ou wget avec Cygwin .

    wget -O - --referer="http://example.com/some/path" http://example.com/

ou

    curl -e "http://example.com/some/path" http://example.com/

Mais, apparemment, votre raison principale est de "protéger" une page, je pense. Si vous voulez vraiment vous assurer qu'une page (appelez-la "B") n'est visitée qu'après qu'une autre page ("A") a été visitée en premier, vous avez besoin d'une logique plus complexe côté serveur.

Si vous stockez un cookie de session, vous pouvez intégrer une logique à la page "A". qui définit une variable booléenne. Ajoutez ensuite la logique à la page "B". vérifiant que la variable a bien été définie.

Je le laisserai comme exercice au lecteur pour comprendre comment le faire dans ASP.NET. (Parce que je suis un programmeur PHP.; -])

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top