2013-01-15 150 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