2011-03-28 5 views
3

J'ai entendu que HTTP_REFERER peut être usurpé. J'ai 2 sites, le premier contacte le second, et le second utilise HTTP_REFERER pour vérifier que la requête provient du premier.HTTP_REFERER est-il défini par le client?

Si je reçois une fausse requête de mon premier site vers le second site et que je sais que cette demande n'a pas été faite, que devrais-je en penser? un troisième site web usurpe http_ref pour tous ses utilisateurs, ou un individu l'usurpe-t-il dans les paramètres de son navigateur? Je veux savoir si http_ref est défini/usurpé par le client/navigateur ou par le site Web lui-même?

Répondre

8

Ce sont les informations envoyées par le client. Il est généralement défini comme la page à partir de laquelle vous avez cliqué sur le lien.

Il peut également absolument être spoofé. Vous pouvez le faire vous-même en définissant HEADER dans une requête PHP cURL. Le serveur de réception verra ceux de l'en-tête, même s'ils n'ont jamais été envoyés depuis google.com. Vous pouvez également usurper tout ce que vous verriez dans l'en-tête (agents d'utilisateur, cookies, etc.).

Vous allez avoir du mal à détecter les en-têtes usurpés à moins que vous ne sachiez exactement à quoi chacun devrait ressembler à partir de chaque source. La meilleure chose à faire est de travailler avec des adresses IP et de limiter les types d'en-tête que vous acceptez (par exemple, si une page ne peut utiliser que des requêtes GET, rejetez toutes les requêtes POST). Même si quelqu'un veut vous parodier, il y a des chances qu'il le fasse et vous ne le saurez pas.

Si vous essayez de sécuriser une connexion entre 2 sites de votre site, vous devriez limiter la connexion avec plus qu'un simple en-tête, ce qui n'est pas sécurisé du tout.

Editer: Vous pouvez même envoyer des en-têtes vraiment faux. J'ai mis à jour l'exemple pour montrer ce que je veux dire. Certains sites utilisent des en-têtes personnalisés (comme le faux) pour passer l'authentification.

0

Il peut être très facilement usurpé par le client. Cependant, la plupart des gens ne dérangeraient pas. Dans 99% des cas, vous devriez penser que c'est la valeur correcte, sauf si vous avez une raison valable de ne pas le croire (comme si vous soupçonnez un bot).

+3

Oui, pour des raisons fonctionnelles, il est bon de l'utiliser. Pour des raisons de sécurité, il ne devrait pas être utilisé. – Brad

+0

Si c'était 99%, ce serait plus ou moins un non-problème; hélas, il est plus proche de 90% (ou l'habitude d'être, je l'ai vérifié en 2009) - donc ce n'est pas vraiment un cas limite. – Piskvor

Questions connexes