我想存儲用戶來自的頁面位置(在我的網站上)。我想這樣做的例子:說某人發送了一條評論,但沒有登錄。"process_comment.php"
將處理它併發送header(location:$_GET['prev_page']);
當然,我會在發送之前過濾$ _GET。通過GET方法而不是HTTP_REFERER傳輸上一頁位置更安全嗎?
應該用會話嗎?
謝謝!
我想存儲用戶來自的頁面位置(在我的網站上)。我想這樣做的例子:說某人發送了一條評論,但沒有登錄。"process_comment.php"
將處理它併發送header(location:$_GET['prev_page']);
當然,我會在發送之前過濾$ _GET。通過GET方法而不是HTTP_REFERER傳輸上一頁位置更安全嗎?
應該用會話嗎?
謝謝!
它實際上是完全一樣的。兩種方法都意味着信息在HTTP查詢中傳遞,這很容易被僞造。所以你不能真正相信一種方法比另一種方法更多。這就是說,只要你不依賴這些信息來實現真正重要的事情,你可以承認引用者是可信的,因爲僞造比查詢字符串參數要複雜一點。至少對於普通用戶來說。
最好的解決方案是,如果您需要信任某些重要的信息,那麼將其作爲會話變量存儲在服務器上。在檢查之前的值是什麼之後,每個頁面都會存儲它的URL。
那麼,HTTP_REFERER可以被一些客戶端剝離出來..我似乎記得一些諾頓網絡安全產品做到了,可能其他人也這樣做。因此,在會話中設置上一頁並將其用於重定向會更加可靠。
如果你可以使用它,session是一個更安全的選擇。從GET或者甚至頭部發回用戶可以讓狡猾的人可能會濫用你的代碼中的任何缺陷來做可能的事情。
頭部本身也可能被某些防火牆軟件刪除。
我不認爲在這種情況下使用GET時會出現問題。你不能總是依賴於能夠從瀏覽器中檢索引用。
如果您使用$_SESSION
,如果用戶打開多個窗口/選項卡並同時執行不同的操作,將會出現問題。沒有什麼比只能擁有網站的窗口更煩人了。
您可以將該值存儲在SESSION變量中,並通過一個簡短密鑰進行標識。該密鑰進入GET字符串。這樣,您就可以保持網址清潔,並且不會冒許多服務器對GET參數具有1024字節限制的風險。
GET方法呢? – Gal 2009-12-03 16:23:31