2012-05-23 70 views
1

Google's Webmaster blog寫了一些關於如何防止打開重定向保護濫用的解決方案,我一直困惑於那裏的一些解決方案相當長的一段時間,我嘗試了谷歌搜索,但沒有發現任何結果。打開重定向保護

  1. 更改重定向代碼以檢查引薦
  2. 考慮使用白名單
  3. 考慮簽署您的重定向
  4. 明確拒絕網站重定向的解決方案

我的猜測:

  1. 使用%{HTTP­_RE­FERER}做一些檢查URL請求
  2. 使用的URL請求一些正則表達式來檢查,如果在url 要求該網站是正則表達式的
  3. 想不出任何
  4. 燦」的範圍之內t想起任何

請讓我知道如果我的猜測是正確的,如果他們不是請告訴我如何正確使用PHP或Apache。謝謝!

回答

1
  1. 是正確的,但這不是一個可靠的方法。 HTTP Referrer可以被操縱。
  2. 定義允許重定向到的URL列表,與此列表進行比較並取消重定向到任何其他URL。
  3. 將重定向的鹽漬散列添加爲重定向參數。在重定向之前,請使用請求參數檢查散列。如果計算的散列與請求參數中的散列相同,則可能不會執行請求操作 - >可以執行重定向。這樣可以防止任何重定向被執行,除非有人猜測你的散列生成算法(這就是爲什麼你必須用密鑰對它進行賦值)。
  4. 取消所有重定向,這將導致任何URL不包含您的網站作爲主機。這可以使用正則表達式來完成,如您在2處猜測的那樣。
+0

因爲HTTP-Referrer可由客戶端編輯 - >忽略它。或者用它作爲額外的檢查,如果這讓你更快樂,但不要把它作爲安全檢查。如何使用白名單?那麼$ list = array(「[URL1]」,「[URL2]」,...)。然後使用in_array()檢查請求的重定向目標是否在此列表中。如果是這樣 - >重定向。這是一個基本的例子,可以根據需要通過額外的正則表達式擴展。 – TRD

+0

好的,謝謝! –

0

當您的應用根據用戶提供的內容(例如POST或GET)進行盲目重定向時,Open Redirect變得可能。網絡釣魚攻擊最常使用開放重定向。

要防止打開重定向,您應驗證並驗證您重定向到的URL是否來自用戶輸入。它應該根據白名單進行驗證。

+0

如何使用apache或php創建白名單? –

+0

@PHPForLife你應該創建一個while-list數組。然後迭代通過這一個使用一些條件對用戶輸入 – Yang

+0

@metal_fan doubleyourdating.com已關閉,謝謝大聲笑 –