PHP 上的客戶端 IPv6 但節點伺服器上的 IPv4 - 需要它們相同
P粉239164234
P粉239164234 2023-09-04 19:35:35
0
1
600
<p>我遇到了與安全性和驗證相關的問題。我有一個軟體可以檢查以確認用戶,我需要確保發送 PHP 請求和節點伺服器請求的是相同客戶端。但是,在節點伺服器上,客戶端的 IP 以 IPv4 顯示,而在 PHP 上以 IPv6 顯示。有什麼方法可以在某處獲得相同的輸出,例如在節點伺服器上提取 IPv6 或在 PHP 伺服器上提取 IPv4?謝謝。 </p> <p>取得相同的 IP 或驗證它是否為相同客戶端,儘管 IPv4 和 IPv6「不同」</p>
P粉239164234
P粉239164234

全部回覆(1)
P粉860370921

問題在於 IPv6 和 IPv4 沒有以任何方式耦合。無法從 v4 位址推斷出 v6 位址,反之亦然。

以我的拙見,您應該避免透過 IP 位址驗證用戶,因為 IP 位址是 欺騙,這種做法會導致此類問題。也就是說,有幾個“解決方案”。

  • 在託管 PHP 應用程式的網頁伺服器上停用 IPv6。由於您沒有提到這是什麼類型的網頁伺服器,您應該能夠在Google上搜尋「停用 ipv6 apache」之類的內容來了解如何實現這一點。這應該保證兩台伺服器上的 IPv4 位址相同。我個人不太喜歡這個解決方案,因為它阻礙了 IPv6 的採用。

  • 節點伺服器上啟用 IPv6。請注意,出於任何原因,用戶端仍然可能更喜歡 IPv4 而不是 IPv6,並且無法保證它將對兩個網路伺服器使用 IPv6。

  • 您可以將所有呼叫從一個網​​頁伺服器代理到另一台網頁伺服器,並在「X-Forwarded-For」標頭中傳遞原始 IP。這會引入一些開銷,但來源IP會更穩定。

  • 就我個人而言,我會避免使用 IP 位址並實現某種儲存在客戶端上的令牌,如果可以的話,可以透過共用資料庫在兩台伺服器上進行驗證。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!