検索

ホームページ  >  に質問  >  本文

PHP ではクライアント IPv6 ですが、ノード サーバーでは IPv4 - それらは同じである必要があります

<p>セキュリティと認証に関連する問題が発生しています。ユーザーを確認するソフトウェアを持っていますが、PHP リクエストとノードサーバーリクエストを送信しているクライアントが同じであることを確認する必要があります。ただし、ノードサーバーではクライアントの IP は IPv4 として表示されますが、PHP では IPv6 として表示されます。ノードサーバーでIPv6を抽出するか、PHPサーバーでIPv4を抽出するなど、同じ出力をどこかで取得する方法はありますか?ありがとう。 </p> <p>IPv4 と IPv6 が「異なる」場合でも、同じ IP を取得するか、同じクライアントであるかどうかを確認します</p>
P粉239164234P粉239164234542日前691

全員に返信(1)返信します

  • P粉860370921

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

    問題は、IPv6 と IPv4 がまったく結合されていないことです。 v4 アドレスから v6 アドレスを推測したり、その逆を推測したりすることはできません。

    私の意見では、IP アドレスは スプーフィング され、このような問題が発生する可能性があるため、IP アドレスによるユーザー認証は避けるべきです。とはいえ、「解決策」はいくつかあります。

    • PHP アプリケーションをホストしている Web サーバーで IPv6 を無効にします。これがどのタイプの Web サーバーであるかについては言及されていないため、「ipv6 apache を無効にする」などで Google で検索して、これを実現する方法を確認できるはずです。これにより、両方のサーバーの IPv4 アドレスが同じになることが保証されます。私は、IPv6 の採用を妨げるため、この解決策は個人的に好きではありません。

    • ノード サーバーで IPv6 を有効にします。クライアントは何らかの理由で IPv6 よりも IPv4 を好む可能性があり、両方のネットワーク サーバーで IPv6 を使用するという保証はないことに注意してください。

    • 「X-Forwarded-For」ヘッダーで元の IP を渡して、ある Web サーバーから別の Web サーバーにすべての呼び出しをプロキシできます。これにより多少のオーバーヘッドが発生しますが、送信元 IP はより安定します。

    • 個人的には、IP アドレスの使用を避け、可能であればクライアントに保存され、共有データベースを介して両方のサーバーで検証できる何らかのトークンを実装したいと思います。

    • 返事
      0
  • キャンセル返事