2013-07-11 6 views
1

Google 시스템을 Google App Engine으로 이전하려고합니다.Google App Engine 서버 IP 주소

PDF 생성기가 외부 리소스 (예 : 그림)를 필요로 할 때 내부 HTTP 요청 (요청 IP가 사용자 IP와 다른 경우)을 수행합니다. 그런 다음 다른 세션도 시작하므로 사용자가 로그인했는지 확인할 수 없습니다. 올바른 사용 권한을 부여하려면 요청이 서버 IP에서 오는 것인지 확인해야합니다.

if($_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR']) { 
    return true; 
} 

그러나 $ _SERVER [ 'SERVER_ADDR는']를 사용할 수 없습니다 때문에,이 사용할 수 없습니다 : 이전 코드에서

나는이 다음 코드 물마루 확인. 새로운 코드에서

나는이 다음 코드 여물 확인 : 문제가

$allowed_ips = array(
    '127.0.0.1', 
    '8.35.201.100' 
); 

if(in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) { return true; } 

을; Google App Engine이 내부 요청을 수행하기 위해 사용하는 IP 주소를 모르겠습니다. IP 주소 8.35.201.100을 서버 주소로 찾았지만 더 많은 IP 주소 또는 범위가 있습니다.

작업 대기열 Google App Engine은 IP 주소 0.1.0.2 (https://developers.google.com/appengine/docs/php/taskqueue/overview-push#Task_Execution)에서 요청을 발행합니다. 이것은 내부 요청과 동일합니다.

접견, 헨드릭

+0

IP 주소 대신 요청 헤더를 사용할 수 있습니다.이 헤더는 appengine에서 온 요청이며 appengine appID를 알려주므로 자신의 appengine 앱을 식별 할 수 있습니다. –

+0

이 요청 헤더를 얻으려면 어떻게해야합니까? 여러 방법 ($ _SERVER, getallheaders())을 시도했지만 아무도 나에게 요청 원점 및 appID를 제공하지 않습니다. – Hendrik

답변

2

I AppEngine에 IP 주소를 개시 생각하지 않습니다. AppEngine은 인스턴스가 회전하고 회전하는 동적 환경이므로 사물이 변경되면서 다른 IP로부터의 요청이있을 것입니다.

AppEngine에서 HTTP 요청을하면 AppEngine의 요청임을 나타내는 몇 가지 헤더 필드가 설정됩니다. AppId가 포함되어 있다고 생각합니다. 어쨌든 여기에 문서가 있습니다.

보안 관점에서

https://developers.google.com/appengine/docs/php/urlfetch/#Request_Headers

, 사람은 가짜 HTTP 헤더를 쓸 수 있습니다. 그래서 저는 그것을 인증 수단으로 의지하지 않을 것입니다.