2011-01-01 10 views
8

사용자가 인터넷을 통해 액세스 할 수없는 로컬 컴퓨터에서 실행 중인지 검색하려는 PHP 스크립트가 있습니다. 현재 그는 127.0.0.1에 대한 서버 주소를 확인합니다. 이것이 최선의 관행입니까 아니면 더 좋은 방법이 있습니까?로컬 호스트에서 실행 중인지 확인하는 방법

+0

예, 또는 Windows 7 호스트에서 IPV6':: 1'을 사용하여 http://en.wikipedia.org/wiki/Localhost – RobertPitt

+0

감사합니다. IPv6는 고려하지 않았습니다. 건배. –

답변

13

로컬 호스트는 항상 당신이해야합니다

if(IPAddress::In(array("127.0.0.1","::1"))) 
{ 
    //Show Application 
} 

나는 매우 많은 의심을 의미하는 경우 응용 프로그램이 안전 할 것입니다 내 그래서 IP를 검증, IPv4의 루프백 IP 주소 127.0.0.1로 변환, 또는 IPv6의 ::1 당신의 포트 80 이후의 엘리트 해커들로 구성된 팀이지만, TCP 패킷이 수정 될 수 있기 때문에 IP 주소에 의존하는 것에 관한 몇 가지 이야기가있었습니다.

하지만 걱정할 필요는 없습니다.

0

호스트 이름 localhost를 확인할 수도 있지만 서버 주소가 127.0.0.1이면 해결됩니다. 이것은 ipv4의 표준 사례입니다. ipv6에서 로버트 피트 (Robert Pitt)가 제안한대로 체크 할 수 있습니다.

+0

127.0.0.1은 항상 현재 로컬 컴퓨터 인 – RobertPitt

+0

@ RobertPitt로 확인되지만 사실일지도 모르지만 로컬 컴퓨터에서만 확인되는 유일한 주소는 아닙니다. 127/8 네트워크 블록에 약 16777216 개가 더 있습니다. –

6

지금까지의 답변이 아직 확실하지 않지만 혼란 스러울 수도 있습니다. 나는 특히 "인터넷을 통해 접근 할 수 없다"는 질문에 대답하고 있습니다. 여기 내 대답은 대답 :

PHP가 아닌 웹 서버는 소켓에서 수신 대기하고 연결을 허용합니다. PHP는 $ _SERVER (http://www.php.net/manual/en/reserved.variables.server.php)에서 연결에 대한 정보를 얻을 수 있습니다. 확인하고있는 것은 연결이 어디서 왔는지에 관한 것입니다. $ _SERVER의 다른 IP 주소를 통해 서버를 사용할 수 있는지 여부는 알 수 없습니다. 예를 들어, 나는 어떤을 통해 아파치/PHP의 내 로컬 인스턴스에 액세스 할 수 있습니다

귀하의 계획이 app은 $ _SERVER [ "SERVER_ADDR"]에서 "올바른"값을 볼 때 다르게 행동해야하므로 매우 안전합니다. 즉 원격 클라이언트의 사용자가 스푸핑 할 가능성은 거의 없습니다.

그런 말은 모두 사용자 인증이나 인터넷을 통해 배포 된 응용 프로그램에 대한 사용자 권한/동작 인증에 이러한 기술을 사용하지 않을 것입니다. 한 가지 예외는 localhost에서 액세스 할 때만 사용할 수있는 전체 응용 프로그램을 가지고있는 경우 일 수 있습니다. 그러면이 기술은 적절한 의미를 가지며 개인용 응용 프로그램에 충분히 안전합니다.

+0

저는 보안에 대해 걱정하지 않습니다. 스크립트 (WordPress 플러그인)는 파일의 URL을 웹 기반 API로 보냅니다. 사람들이 로컬이 아닌 네트워크에서 접근 할 수없는 컴퓨터에서이 작업을 시도하지 않도록 노력 중입니다. –

관련 문제