2008-11-21 21 views
1

目前,我們存儲用戶的HTTP_REFERER,所以我們可以將用戶重定向到他們曾經瀏覽的前一頁,他們在登錄之前。最好是使用HTTP REFERER進行重定向或使用其他方法?

HTTP引用來自客戶端,並且可以僞造或空白。是否有更安全/可靠的方法來提供這種方便的用戶重定向?

+0

每當我使用它時,我的心態是,如果有人欺騙了他們的引薦者,那麼我真的不在乎他們是否將它帶回了他們來自的地方。我相信99%的時間都可用並且正確。 1%是高級用戶,無論如何都會找到回家的路。 – 2008-11-21 16:49:06

+0

我記得當天突然有一半網頁被打破了。原來諾頓(這個混蛋)是從我的帖子中刪除任何推介或獲取。我非常生氣... – Will 2008-11-21 16:54:12

回答

2

你有會話的唯一選擇?

如果是這樣,您可以在服務器端跟蹤他們在此會話中訪問過的頁面,並將它們發送回前一個頁面。

(高速緩存威力搞砸,但你可以設置緩存控制:頭適當)

但是,這一切似乎得不償失的痛苦。如果他們愚蠢地做到這一點,將它們發送回欺騙頁面是否有任何實際問題?

Paul。

2

莫名其妙運行

是我能想到的(JavaScript)的

0

通常我會通過登錄表單傳遞它。

<form action="login" method="post"> 
<input type="hidden" name="url" value="... whatever the current url is ..."> 
<input type="text" name="username"> 
<input type="text" name="password"> 
</form> 
0

不是我所知道的。但是,那麼你是否認爲普通用戶會在僞造Referer時被重定向到錯誤的地方?看起來不太可能。

我擔心需要將用戶重定向到他們來自哪裏,甚至不需要詢問他們。我要麼有一個首選項來決定是否允許(以及去哪裏),或者先要求他們重定向,能否拒絕重定向。

如果RoBorg假設您將在不同於您自己的網站上提供登錄屏幕,並且您希望存儲源網站,那麼當然您可以使用相同的表單發送他們登錄的網站。

0

引用人可能會爲大多數用戶正常工作,但我想你需要檢查XSRF。我們所做的是,當有人點擊他們必須登錄的區域時,他們會被重定向到登錄頁面,並顯示他們存儲在會話中的URL。

登錄後,它們將被重定向到以前的URL。

當然,這很大程度上取決於您的身份驗證設置!

0

我實際上有一個函數使用幾種不同的方法進行重定向,具體取決於用戶通過哪個路徑進入登錄頁面。

我的用戶登錄後調用看起來類似的功能:

Protected Sub doRedirect(ByVal sender As Object, ByVal e As System.EventArgs) 
    If Not Request.QueryString("rtn") Is Nothing Then 
     Response.Redirect(Request.QueryString("rtn").ToString) 
    ElseIf Me.hidden_return.Value <> "" Then 
     Response.Redirect(Me.hidden_return.Value) 
    ElseIf Not Request.UrlReferrer Is Nothing AndAlso Request.UrlReferrer.Segments(Request.UrlReferrer.Segments.Length - 1) <> "login.aspx" Then 
     Response.Redirect(Request.UrlReferrer.ToString) 
    Else 
     Response.Redirect("default.aspx") 
    End If 
End Sub 

顯然,這一切可以在客戶端上欺騙結束,但我真的不關心,如果他們想欺騙自己。

相關問題