取決於兩個網站的獨立程度。如果他們共享私人數據(數據庫或某個文件空間)的訪問權限,那麼您可以考慮在它們之間傳遞一個隨機值。否則,如果您可以使用time + salt方法,它只允許那些具有相同salt /算法的用戶生成有效的URL。
中號 =主要網站
^h =幫助網站
ķ =它們之間傳遞密鑰值(以純文本格式是罰款)
答:服務器時間+鹽:
XMIT:M哈希時間(四捨五入爲 - 最接近t en分鐘標記)+一些隨機值(鹽)使K。並將K附加到幫助URL(更好的是幫助請求是POST
,所以K對用戶不可見)。
RCV:^h完成使用相同的算法相同的散列,如果它的散列相匹配的供應ķ則訪問。否則H顯示一個空白頁面(或許爲了安全起見,他們希望網站的詳細信息保密)或錯誤消息(更多風險,但對合法用戶有幫助)。
REQ:同一臺服務器上的兩個站點或時間上合理同步的服務器上的兩個站點 - 由於10分鐘量化,無需完美同步。重要的是,兩臺服務器的鹽值是相同的,並且不能公開訪問(如果第三方曾經發現它的風險,它也可以更新)。
安全:鹽是從來沒有過的兩個服務器之間的純文本,而是因爲只有通過了關鍵的工作了一段時間,甚至有人嗅探值(或複製出來源的M個)的能只能暫時訪問。您需要四捨五入到最接近的n分鐘標記,以便(a)給頁面訪問者提供合理的時間請求幫助(b),因爲請求和檢查相距少量時間;(c)因爲如果網站在不同的服務器上的時間不一樣。安全來自於保持鹽和時間計算算法的私密性。
注:在^h您可能需要測試的ķ兩個值允許風口浪尖情況下四捨五入導致中號和^h到不同的時間(因爲不同的時間或因延遲在處理)
B:數據庫/文件密鑰:
XMIT:M爲K生成一個隨機值,並將它和一個到期時間存儲在數據庫表或文件中,其中H可以訪問。再次中號附着ķ(未超時)到GET或POST請求ħ。
RCV:^h檢查對存儲的值的列表中的值,如果發現沒有超時則訪問。
REQ:這兩個站點都可以訪問共享文件存儲或數據庫。數據庫表或文件將需要存儲多個隨機值。無論是中號或^h應該清理過期的項目(無論是作爲他們的操作代碼的一部分,或計劃任務[cron作業]可以設置定期完成此)
安全:雖然K以純文本形式存在,沒有必要了解它 - 再次,嗅探該值或從某處將其從源複製出來只會臨時授予對H的訪問權限。
總體
根據您是用戶的擊球超時,或使用「發現」鍵就可以使用AJAX來產生價值的幫助按鈕被點擊時,保持超時非常未經授權的來源如何寬容低(17秒?)
這太好了。將嘗試一下。非常感謝你! – 2011-02-02 10:10:39