2013-07-11 2 views
1

Я переношу нашу систему в Google App Engine.IP-адрес сервера приложений App App

Когда нашему 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; } 

Проблема заключается в том, Я не знаю, какие IP-адреса Google App Engine использует для внутреннего запроса. Я нашел 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, и он также сообщает вам appendine appID, поэтому вы можете определить свое приложение appengine –

+0

, как я могу получить заголовки этого запроса? Я пробовал несколько способов ($ _SERVER, getallheaders()), но никто не дает мне источник запроса и appID – Hendrik

ответ

2

Я не думаю, что AppEngine раскрывает IP-адреса. AppEngine - динамическая среда, при которой экземпляры разворачиваются и вращаются, будут возникать запросы от разных IP-адресов по мере изменения вещей.

Когда вы делаете HTTP-запросы из AppEngine, он устанавливает несколько полей заголовков, чтобы отметить, что запрос был из AppEngine. Я думаю, что AppId включен. Во всяком случае, здесь есть документация.

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

С точки зрения безопасности, любой человек может просто писать фальшивые заголовки HTTP. Поэтому я не стал бы полагаться на это как средство аутентификации.

:
Смежные вопросы