Google App Engine服务器IP地址

时间:2013-07-11 07:46:12

标签: php google-app-engine

我正在将我们的系统迁移到Google App Engine。

当我们的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)发出请求。内部请求是否相同。

Greets,Hendrik

1 个答案:

答案 0 :(得分:2)

我不认为AppEngine会公开IP地址。 AppEngine是一个动态环境,实例正在旋转和旋转,随着事情的变化会有来自不同IP的请求。

当您从AppEngine发出HTTP请求时,它会设置一些标题字段以标记该请求来自AppEngine。我认为AppId包含在内。无论如何这里是关于它的文件。

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

从安全角度来看,任何人都可以编写虚假的HTTP标头。所以我不会依赖它作为身份验证的手段。