PHP의 클라이언트 IPv6, 노드 서버의 IPv4 - 동일해야 함
P粉239164234
P粉239164234 2023-09-04 19:35:35
0
1
618
<p>보안 및 인증과 관련된 문제가 발생했습니다. 사용자를 확인하는 소프트웨어가 있는데, PHP 요청과 노드 서버 요청을 보내는 클라이언트가 동일한지 확인해야 합니다. 그러나 노드 서버에서는 클라이언트의 IP가 IPv4로 표시되는 반면 PHP에서는 IPv6으로 표시됩니다. 노드 서버에서 IPv6을 추출하거나 PHP 서버에서 IPv4를 추출하는 등 어딘가에서 동일한 출력을 얻을 수 있는 방법이 있습니까? 감사해요. </p> <p>IPv4와 IPv6가 '다른' 경우에도 동일한 IP를 얻거나 동일한 클라이언트인지 확인하세요</p>
P粉239164234
P粉239164234

모든 응답(1)
P粉860370921

문제는 IPv6와 IPv4가 어떤 방식으로도 결합되지 않는다는 것입니다. v4 주소에서 v6 주소를 추론하는 것은 불가능하며 그 반대의 경우도 마찬가지입니다.

저의 소견으로는 IP 주소는 스푸핑되므로 IP 주소로 사용자를 인증하는 것을 피해야 하며 이로 인해 이와 같은 문제가 발생할 수 있습니다. 즉, 몇 가지 "해결책"이 있습니다.

  • PHP 애플리케이션을 호스팅하는 웹 서버에서 IPv6를 비활성화합니다. 이것이 어떤 유형의 웹 서버인지 언급하지 않았으므로 이를 달성하는 방법을 찾으려면 "ipv6 apache 비활성화"와 같은 것을 Google에 검색할 수 있어야 합니다. 이렇게 하면 두 서버의 IPv4 주소가 동일한지 확인해야 합니다. 저는 개인적으로 이 솔루션이 IPv6 채택을 방해하기 때문에 마음에 들지 않습니다.

  • 노드 서버에서 IPv6를 활성화하세요. 클라이언트는 어떤 이유로든 여전히 IPv6보다 IPv4를 선호할 수 있으며 두 네트워크 서버 모두에 IPv6을 사용한다는 보장은 없습니다.

  • 한 웹 서버에서 다른 웹 서버로 모든 호출을 프록시하고 "X-Forwarded-For" 헤더에 원래 IP를 전달할 수 있습니다. 이로 인해 약간의 오버헤드가 발생하지만 소스 IP가 더 안정적이 됩니다.

  • 개인적으로는 IP 주소 사용을 피하고 가능하면 클라이언트에 저장되고 공유 데이터베이스를 통해 두 서버 모두에서 확인할 수 있는 일종의 토큰을 구현하겠습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿