2011-02-01 49 views
3

我有一個網站爲更大的應用程序的用戶提供幫助信息。直到最近,我的幫助網站和主要應用程序都在企業防火牆後面。現在主應用程序已經移到防火牆之外,我也必須移動我的幫助站點。單向站點到站點身份驗證(PHP/Apache)

我唯一的安全要求是隻有當用戶點擊主應用程序中的「幫助」鏈接時,才能進入我的幫助網站。 (很明顯,公司不希望他們再次輸入他們的憑證。)我不需要在站點之間來回交換信息。

我看過$ _SERVER ['HTTP_REFERER'](不安全),Oauth和OpenID(這看起來像是矯枉過正)。我想知道如果答案在於單向SSL認證(主要應用程序有一個證書),但我在這裏有點失落。

所以問題是:做到這一點最簡單的方法是什麼,在Apache和PHP方面看起來如何?

非常感謝您的任何建議!

回答

1

幫助鏈接可能包含一個標記字符串。當用戶點擊鏈接時,幫助系統會查看該令牌並向您的應用程序發出Web服務調用,詢問該令牌是否有效。如果令牌有效,則Web服務以肯定響應方式響應並且幫助站點讓用戶進入。您可以讓令牌僅在該用戶登錄時有效。此外,您可以將客戶端的IP地址編碼爲該URL並驗證嘗試進入幫助系統的人是否來自相同的IP地址。所以像這樣:

  1. 你有一個鏈接,以幫助令牌:HTTP://help.yoursite.com/?token= <唯一id> &客戶端= MD5(<客戶端IP>)
  2. 用戶點擊該鏈接,將他們帶到help.yoursite.com。
  3. help.yoursite.com檢查md5(<客戶端IP>)是否與url的客戶端參數匹配。如果是這樣,它的可能是同一個人,而不是惡搞。
  4. help.yoursite.com然後向yoursite.com發出Web服務調用,詢問該客戶端IP的唯一標識是否有效。
  5. yoursite.com檢查它是否有效並返回是或否,並且可能登錄人員的用戶名,以便help.yoursite.com將具有登錄人員的用戶名。
  6. help.yoursite.com接受響應並讓用戶進入或不進入。

這樣你確保客戶端是一樣的,並且他們已經登錄到其他網站。你和你的help.yoursite之間的溝通必須是安全的。它比oauth簡單得多,甚至有點類似於協議,但它並不像整體那樣安全。還有其他方法,但這取決於你願意接受多少風險。

+0

這太好了。將嘗試一下。非常感謝你! – 2011-02-02 10:10:39

0

取決於兩個網站的獨立程度。如果他們共享私人數據(數據庫或某個文件空間)的訪問權限,那麼您可以考慮在它們之間傳遞一個隨機值。否則,如果您可以使用time + salt方法,它只允許那些具有相同salt /算法的用戶生成有效的URL。

中號 =主要網站
^h =幫助網站
ķ =它們之間傳遞密鑰值(以純文本格式是罰款)

答:服務器時間+鹽:

XMITM哈希時間(四捨五入爲 - 最接近t en分鐘標記)+一些隨機值(鹽)使K。並將K附加到幫助URL(更好的是幫助請求是POST,所以K對用戶不可見)。

RCV^h完成使用相同的算法相同的散列,如果它的散列相匹配的供應ķ則訪問。否則H顯示一個空白頁面(或許爲了安全起見,他們希望網站的詳細信息保密)或錯誤消息(更多風險,但對合法用戶有幫助)。

REQ:同一臺服務器上的兩個站點或時間上合理同步的服務器上的兩個站點 - 由於10分鐘量化,無需完美同步。重要的是,兩臺服務器的鹽值是相同的,並且不能公開訪問(如果第三方曾經發現它的風險,它也可以更新)。

安全:鹽是從來沒有過的兩個服務器之間的純文本,而是因爲只有通過了關鍵的工作了一段時間,甚至有人嗅探值(或複製出來源的M個)的能只能暫時訪問。您需要四捨五入到最接近的n分鐘標記,以便(a)給頁面訪問者提供合理的時間請求幫助(b),因爲請求和檢查相距少量時間;(c)因爲如果網站在不同的服務器上的時間不一樣。安全來自於保持鹽和時間計算算法的私密性。

:在^h您可能需要測試的ķ兩個值允許風口浪尖情況下四捨五入導致中號^h到不同的時間(因爲不同的時間或因延遲在處理)

B:數據庫/文件密鑰:

XMITMK生成一個隨機值,並將它和一個到期時間存儲在數據庫表或文件中,其中H可以訪問。再次中號附着ķ(未超時)到GETPOST請求ħ

RCV^h檢查對存儲的值的列表中的值,如果發現沒有超時則訪問。

REQ:這兩個站點都可以訪問共享文件存儲或數據庫。數據庫表或文件將需要存儲多個隨機值。無論是中號^h應該清理過期的項目(無論是作爲他們的操作代碼的一部分,或計劃任務[cron作業]可以設置定期完成此)

安全:雖然K以純文本形式存在,沒有必要了解它 - 再次,嗅探該值或從某處將其從源複製出來只會臨時授予對H的訪問權限。

總體

根據您是用戶的擊球超時,或使用「發現」鍵就可以使用AJAX來產生價值的幫助按鈕被點擊時,保持超時非常未經授權的來源如何寬容低(17秒?)

相關問題