IFrame referer问题 – asp.net c#

我们的一个应用程序将在iframe中运行,在salesforce内部,我在访问引用者时遇到了麻烦。 他们希望我们做一些引用检查,以确保请求来自salesforce,并且我们已经获得了要检查的IP地址。

我的问题是,每当我尝试通过以下两种方法之一访问引用时:

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

它返回null。

任何想法我怎么能抓住引用者?

PS:我知道你可以欺骗引用者,但这是要求的一部分。

如果我正确理解了这个问题,那么您的客户网站可以通过在其网页中嵌入IFrame来指向您的网站。 您希望“确保”请求来自主页,而主页本身是指定网站集的一部分。 指定站点集由一组IP地址描述。 这涵盖了吗?

棘手。 首先让我们假设你有一个引用者。 您需要从中获取主机名(使用Uri类型很容易)。 然后,您需要使用DNS解析主机名的IP地址(再次使用.NET框架并不太困难)。

当然你需要得到一个引用者,这是最棘手的一点。 浏览器并不总是在请求中放置引用标头。 当裁判地址与引用者不在同一个域中时尤其如此,这就是这里的情况。 IOW,这是一个showstopper

解决此问题(并且不易于欺骗)的更好方法是使用一些基于散列的身份validation。 不必太复杂(如果原始要求感觉参考测试足够了)。

只有在通过链接请求页面时,引用者才会在那里。 当打开页面时,通过直接键入地址(或者在设置IFRAME的src。的情况下)从浏览器中的地址栏说出,引用者将为空。