2013-06-26 40 views
6

我想要一個只能從批准的網站訪問的頁面,但我不知道如何處理它。我是否只需要提供一段PHP代碼就可以生成一個隨機密鑰並將其附加到該URL,並且該密鑰僅對一個訪問有效?只允許鏈接從特定頁面訪問?

或者是否有可能在另一個域上設置cookie,然後在最終目的地處讀取?也許這將是在初始頁面1px的iframe?

還是我只是想做一些永遠不會工作的東西?

+0

您是否可以控制始發和目標網站?在這種情況下,我會使用加密選擇並在站點之間進行協調的cookie(至少被動地使用cookie,因爲cookie中必須有效簽名,並有明確的時間戳,而不是明顯的重複項) – hexafraction

+0

我沒有直接控制權其他網站,但我可以說,爲了使用我的網站並允許您的用戶使用它,您必須將這個php小部件添加到您的網站,並且我可以這樣做服務器端腳本。我將如何處理Cookie跨域? IFRAME? – zen

+2

也許看看https://en.wikipedia.org/wiki/HTTP_cookie#window.name,其中指出:「所有當前的Web瀏覽器都可以通過JavaScript存儲相當大量的數據(2-32 MB) DOM屬性window.name,這個數據可以用來代替會話cookie,也可以跨域使用,這種技術可以與JSON/JavaScript對象結合,在客戶端存儲複雜的會話變量[51]。加密簽名的認證數據可以存儲在那裏/ – hexafraction

回答

1

在評論中,我們能夠澄清......

我[禪]只需要一種方法來確保頁面沒有需要爲每個用戶提供登錄憑據,或者針對該問題的任何登錄信息。我想過的另一個選擇是,每次點擊一個鏈接時可能會發送POST,而且如果POST包含特定鍵,我的頁面將只允許它們進入。 [...]

由於檢測欺詐性訪問是不是一個問題,我建議你只需選中http referer覈定站點(和/或網頁)的列表。對於經批准的網站而言,它是非侵入性的,並且不會比您檢查的固定後令牌安全性差。

在PHP中,如果可用,則引用者位於$_SERVER['HTTP_REFERER']變量中。

-2

確定,所以這裏是回答

<?php 
$server = $_SERVER['SERVER_NAME'];   //Getting Server name 
$site_name = "http://$server";    //Creating Website URL from SERVER_NAME 
$url_allowed = array("http://www.allowed1.com", "http://www.allowed2.com"); //Add Allowed Website list Here 
if(in_array($site_name,$url_allowed)){ 
echo "<a href='***your link here***'>This is Link</a>"; 
}else{ 
echo "This Link is Not Allowed For Your Site"; 
} 
?> 
+2

-1,因爲這並不能解決問題,相反,它會在預定義的數組中搜索服務器的名稱。這與OP的問題有什麼關係? – ComFreek

+1

這似乎是驗證完全不同的東西。 – hexafraction

+0

與@zen交談後,似乎推薦人檢查實際上是一種合理的方法。我編輯了答案來反映這一點。 – adhominem