目前,我們存儲用戶的HTTP_REFERER,所以我們可以將用戶重定向到他們曾經瀏覽的前一頁,他們在登錄之前。最好是使用HTTP REFERER進行重定向或使用其他方法?
HTTP引用來自客戶端,並且可以僞造或空白。是否有更安全/可靠的方法來提供這種方便的用戶重定向?
目前,我們存儲用戶的HTTP_REFERER,所以我們可以將用戶重定向到他們曾經瀏覽的前一頁,他們在登錄之前。最好是使用HTTP REFERER進行重定向或使用其他方法?
HTTP引用來自客戶端,並且可以僞造或空白。是否有更安全/可靠的方法來提供這種方便的用戶重定向?
你有會話的唯一選擇?
如果是這樣,您可以在服務器端跟蹤他們在此會話中訪問過的頁面,並將它們發送回前一個頁面。
(高速緩存威力搞砸,但你可以設置緩存控制:頭適當)
但是,這一切似乎得不償失的痛苦。如果他們愚蠢地做到這一點,將它們發送回欺騙頁面是否有任何實際問題?
Paul。
莫名其妙運行
是我能想到的(JavaScript)的
通常我會通過登錄表單傳遞它。
<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>
不是我所知道的。但是,那麼你是否認爲普通用戶會在僞造Referer時被重定向到錯誤的地方?看起來不太可能。
我擔心需要將用戶重定向到他們來自哪裏,甚至不需要詢問他們。我要麼有一個首選項來決定是否允許(以及去哪裏),或者先要求他們重定向,能否拒絕重定向。
如果RoBorg假設您將在不同於您自己的網站上提供登錄屏幕,並且您希望存儲源網站,那麼當然您可以使用相同的表單發送他們登錄的網站。
引用人可能會爲大多數用戶正常工作,但我想你需要檢查XSRF。我們所做的是,當有人點擊他們必須登錄的區域時,他們會被重定向到登錄頁面,並顯示他們存儲在會話中的URL。
登錄後,它們將被重定向到以前的URL。
當然,這很大程度上取決於您的身份驗證設置!
我實際上有一個函數使用幾種不同的方法進行重定向,具體取決於用戶通過哪個路徑進入登錄頁面。
我的用戶登錄後調用看起來類似的功能:
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
顯然,這一切可以在客戶端上欺騙結束,但我真的不關心,如果他們想欺騙自己。
每當我使用它時,我的心態是,如果有人欺騙了他們的引薦者,那麼我真的不在乎他們是否將它帶回了他們來自的地方。我相信99%的時間都可用並且正確。 1%是高級用戶,無論如何都會找到回家的路。 – 2008-11-21 16:49:06
我記得當天突然有一半網頁被打破了。原來諾頓(這個混蛋)是從我的帖子中刪除任何推介或獲取。我非常生氣... – Will 2008-11-21 16:54:12