Heim  >  Fragen und Antworten  >  Hauptteil

Client-IPv6 auf PHP, aber IPv4 auf dem Knotenserver – sie müssen gleich sein

<p>Ich habe ein Problem im Zusammenhang mit Sicherheit und Authentifizierung. Ich habe eine Software, die prüft, ob der Benutzer bestätigt ist, und ich muss sicherstellen, dass es sich um denselben Client handelt, der die PHP-Anfrage und die Node-Server-Anfrage sendet. Auf dem Knotenserver wird die IP des Clients jedoch als IPv4 angezeigt, während sie auf PHP als IPv6 angezeigt wird. Gibt es eine Möglichkeit, irgendwo die gleiche Ausgabe zu erhalten, z. B. das Extrahieren von IPv6 auf einem Knotenserver oder das Extrahieren von IPv4 auf einem PHP-Server? Danke. </p> <p>Erhalten Sie dieselbe IP oder überprüfen Sie, ob es sich um denselben Client handelt, auch wenn IPv4 und IPv6 „verschieden“ sind.</p>
P粉239164234P粉239164234382 Tage vor531

Antworte allen(1)Ich werde antworten

  • P粉860370921

    P粉8603709212023-09-05 15:18:18

    问题在于 IPv6 和 IPv4 没有以任何方式耦合。无法从 v4 地址推断出 v6 地址,反之亦然。

    以我的拙见,您应该避免通过 IP 地址验证用户,因为 IP 地址是 欺骗,这种做法会导致此类问题。也就是说,有几个“解决方案”。

    • 在托管 PHP 应用程序的网络服务器上禁用 IPv6。由于您没有提到这是什么类型的网络服务器,您应该能够在谷歌上搜索“禁用 ipv6 apache”之类的内容来了解​​如何实现这一点。这应该保证两台服务器上的 IPv4 地址相同。我个人不太喜欢这个解决方案,因为它阻碍了 IPv6 的采用。

    • 节点服务器上启用 IPv6。请注意,出于任何原因,客户端仍然可能更喜欢 IPv4 而不是 IPv6,并且无法保证它将对两个网络服务器使用 IPv6。

    • 您可以将所有调用从一个网络服务器代理到另一台网络服务器,并在“X-Forwarded-For”标头中传递原始 IP。这会引入一些开销,但源IP会更稳定。

    • 就我个人而言,我会避免使用 IP 地址并实现某种存储在客户端上的令牌,如果可以的话,可以通过共享数据库在两台服务器上进行验证。

    Antwort
    0
  • StornierenAntwort