2009-09-28 45 views
3

我们的一个应用程序将运行在iframe,salesforce内部,并且遇到访问referer的麻烦。他们希望我们做一些referer检查,以确保请求来自salesforce,并且我们已经获得IP地址进行检查。IFrame referer question - asp.net c#

我的问题是,任何时候我试图通过以下两种方法来访问引用者:

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

它返回我空。

任何想法,我怎么能得到referer? PS:我知道你可以欺骗引用者,但它是要求的一部分。

回答

1

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

棘手。首先让我们假设你有一个引用者。您需要从中获取主机名(使用Uri类型很简单)。然后你需要使用DNS来解析主机名的IP地址(对于.NET框架来说也不算太困难)。

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

更好的方法来解决这个问题(并不容易欺骗)是使用一些基于散列的身份验证。不必太复杂(如果原始需求感觉引用者测试足够了)。

+0

谢谢安东尼。 就是这样,正是我的想法 - 但我想确保我不会错过一些微不足道的东西。 – 2009-09-28 10:05:06

+0

使用XFrameOptions只允许某些父页面iframe页面。 – 2012-12-04 14:32:22

1

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

+0

感谢您的评论,我知道这一点。 – 2009-09-28 10:00:49