2017-01-22 76 views
1

我目前的工作對各地圍繞一個項目如下:跨域驗證在PHP

1(域1)重定向到第2頁(域2)重定向到第3頁(域2)

我除非確認用戶首先訪問了頁面1,否則,請確保不會顯示該頁面的內容。出於顯而易見的原因,我不能使用會話和cookie,因爲domain1和domain2是兩個單獨的域。

$ _SERVER ['HTTP_REFERER']是一個可能的解決方案,但它可以被修改甚至從瀏覽器請求中刪除,所以我不能保證我不會無意中通過使用它來阻止合法用戶。

我該如何去做呢?

+0

你能控制重定向參數嗎?您可以設置變量哈希以驗證數據或基於某些用戶參數。 – vuliad

+0

是的,我可以。第1頁沒有任何表單或用戶參數 - 它有一些其他功能,並且重定向到第2頁。請注意詳細說明如何設置這個散列變量? – Mirian

+0

「它有一些其他功能」 - 這是關於什麼的?你可以用param修改page1到page2的重定向,如http:// page2 /?token = hash_function($ salt,$ user_ip)? – vuliad

回答

0

是的。如果沒有瀏覽器的直接請求,您無法設置Cookie。

您可以在從http://page1重定向到http://page2/?token=hash_function($ salt,$ user_ip)時傳遞令牌。

更復雜的方法是使用page1在域上生成令牌,並使用page2服務器到page1服務器的直接請求進行重新檢查。這允許您創建「一次性」令牌,甚至用戶在會話期間更改其IP(非常罕見) - 此重定向仍然有效。