2013-01-15 391 views
1

我正在向我的网站(.net)添加一个aspx页面,我的客户可以在其中插入信用卡详细信息。 我想只从几个页面访问该页面(让我们称它们为a.aspx和b.aspx),如果有人试图从c.aspx访问此页面,他将无法这样做。 有没有办法限制重定向到只有几页的页面?访问https页面

我试着在页面事件中检查通话的来源是什么,与“发件人”对象,但我不知道它是正确的方式去。

希望这个问题很清楚。

+0

您可以添加到您到目前为止试过什么的问题的例子吗? –

+0

编辑该问题.. –

回答

2

你需要知道的是referer。 简言之,引荐者是将您带到当前页面的页面。

我相信这应该得到引荐的ASP.net

Request.Server["HTTP_REFERER"] 

然后,你可以检查,看看是否引荐符合您的需求来源。但是,我不确定引用欺骗的易用性/普遍性,还是甚至存在。

+0

这是[一个](http://en.wikipedia.org/wiki/Referer_spoofing),它很容易。 –

+0

我认为应该尽可能多,这就是为什么我一定要提及它作为一个可能的安全问题。 – AlienHoboken

2

是的,有 - 看看HttpWebRequest.Referer属性。

使用此功能,您可以看到从哪个页面发出了对c.aspx的请求 - 如果它不是a.aspx或b.aspx,您可以将用户重定向。

0

正如前面menitoned你需要检查当前UrlReferrer,这里是在vb.net

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    Dim bRedirect As Boolean = True 
    Try 
     If Not IsNothing(Page.Request.UrlReferrer) Then 
      Dim sReferer As String = Page.Request.UrlReferrer.ToString() 
      If sReferer.Contains("/a.aspx") Or sReferer.Contains("/b.aspx") Then 
       bRedirect = False 
      End If 
    Catch ex As Exception 
     ' Raise exception, decide whether or not to redirect 
    End Try 
    If bRedirect Then 
     Response.Redirect("~/x.aspx", True) 
    End If 
End Sub