2009-09-28 11 views
3

Une de nos applications sera exécutée dans un iframe, à l'intérieur de la force de vente et j'ai des difficultés à accéder au referer. Ils aimeraient que nous fassions des vérifications de référence, pour nous assurer que la demande provient de Salesforce et que nous avons reçu les adresses IP à vérifier.IFrame referer question - asp.net C#

Mon problème est que chaque fois que je tente d'accéder au referer par l'une des deux méthodes suivantes:

HttpContext.Current.Request.ServerVariables["HTTP_REFERER"] 
HttpContext.Current.Request.UrlReferrer 

il me renvoie null.

Des idées comment pourrais-je obtenir le referer? PS: Je suis conscient que vous pouvez usurper le referer, mais cela fait partie des exigences.

Répondre

1

Si je comprends bien la question, vous avez des sites clients qui se réfèrent à votre site en intégrant IFrames dans leurs pages Web le point de votre site. Vous souhaitez "assurer" que les requêtes proviennent de la page hôte qui elle-même fait partie d'un ensemble de sites désigné. L'ensemble des sites désignés est décrit par un ensemble d'adresses IP. Cela couvre-t-il?

Tricky. Tout d'abord laisse supposer que vous avez un référant. Vous devrez en extraire le nom d'hôte (assez facile en utilisant le type Uri). Ensuite, vous devez résoudre l'adresse IP pour le nom d'hôte en utilisant DNS (encore une fois pas trop difficile avec le framework .NET).

Bien sûr, vous avez besoin d'un referer et c'est le bit le plus difficile. Les navigateurs ne placent pas toujours un en-tête référent dans la requête. Cela est particulièrement vrai lorsque l'adresse de l'arbitre n'est pas dans le même domaine que le référant, ce qui est le cas ici. IOW, ceci est un showstopper.

Une meilleure approche pour résoudre ce problème (et n'est pas sujette à l'usurpation) consiste à utiliser une authentification basée sur le hachage. Ne doit pas être trop sophistiqué (si les exigences d'origine ont estimé que le test de référence était suffisant de toute façon).

+0

Merci Anthony. C'est exactement le cas et exactement les pensées que j'ai eues - mais je voulais m'assurer que je ne manquais pas quelque chose de trivial. –

+0

Utilisez XFrameOptions pour autoriser uniquement certaines pages parent iframe votre page. –

1

Un référent n'existe que si la page a été demandée via un lien. Quand une page est ouverte, dites dans la barre d'adresse dans un navigateur en tapant l'adresse directement (ou dans votre cas où vous définissez la src de l'IFRAME), le référant sera vide.

+0

Merci pour votre commentaire, je suis au courant de cela. –