通常,當您將某人的鏈接發送給某人的社交個人資料時,它會要求您創建一個帳戶以查看它。但是,如果我不想這樣做,而是想給他們一個鏈接,這個鏈接不能被搜索引擎索引,而且這個鏈接的猜測相當複雜,以至於人們可以看到那個鏈接上的內容,我在想例如:如何給別人提供一個別人沒有的東西的鏈接?
www.domain.com/user/content/private/secured/90989834093/testcontent.php
我該如何實現這一安全?
通常,當您將某人的鏈接發送給某人的社交個人資料時,它會要求您創建一個帳戶以查看它。但是,如果我不想這樣做,而是想給他們一個鏈接,這個鏈接不能被搜索引擎索引,而且這個鏈接的猜測相當複雜,以至於人們可以看到那個鏈接上的內容,我在想例如:如何給別人提供一個別人沒有的東西的鏈接?
www.domain.com/user/content/private/secured/90989834093/testcontent.php
我該如何實現這一安全?
而不是這樣做,您可以生成一次性隨機訪問令牌,並在查詢字符串中使用它。該令牌將被存儲在數據庫中,該數據庫將知道它是否先前已被訪問過。當頁面被擊中時,會根據數據庫檢查令牌,如果仍然有效,則會提供內容。
由於Truth已經在下面進行了評論,這將與Session或Cookie結合使用,因此您可以在使用訪問令牌後繼續爲經過身份驗證的用戶提供頁面。
這是Youtube和其他網站上的「不公開」視頻背後的原理 - 一個不明顯的隨機生成的字符串,通過NOINDEX和NOFOLLOW被阻止搜索。但請注意,這個詞的真正含義並不安全;沒有身份驗證,任何訪問該URL的人都將獲得通過。
如果您知道預期的用戶,您可以通過IP或IP範圍限制訪問。只是另一個想法。
或者我正在考慮給他們提供一個選項,讓他們輸入一個介紹人給出的passpharse。 – 2012-03-08 17:19:48
您可以使用散列函數來創建一串「隨機」字符來創建這種類型的URL。
舉例來說,如果一個非標準的個人資料的頁面是:
domain.com/user/$id/show.php
時的$ id是一個VAR其值是用戶的ID。 你可以做這樣的事情:
$hash = md5($id);
domain.com/user/$hash/show.php
的問題是,任何人都可以得到重複的過程,最終達到哈希值。 因此,您應該設置一個隨機字符串,將其添加到數據庫(將其與該用戶關聯)並對其進行哈希處理。
爲了防止搜索引擎索引它,你可以使用簡單的技術,尋找robots.txt
文件。
也許還可以與Sessions和Cookies一起使用,以允許第一個訪問該頁面的用戶訪問該頁面(僅限他)。 – 2012-03-08 17:06:32
這是一個好主意,我會將它添加到我的答案中。 – aaroncatlin 2012-03-08 17:07:11
謝謝!我也在考慮給轉介人提供該人必須輸入而不是擁有賬戶的密碼選項。 – 2012-03-08 17:22:28