谷歌应用引擎服务器IP地址


Google App Engine Server IP adresses

我正在将我们的系统迁移到谷歌应用程序引擎。

当我们的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地址进行内部请求。我找到了8.35.201.100的IP地址作为服务器地址,但是否有更多的IP地址或范围。

任务队列Google应用程序引擎从IP地址0.1.0.2发出请求(https://developers.google.com/appengine/docs/php/taskqueue/overview-push#Task_Execution)。内部请求时也是这样吗。

问候,Hendrik

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

当您从AppEngine发出HTTP请求时,它确实设置了一些头字段来标记请求来自AppEngine。我认为AppId已包含在内。不管怎样,这是关于它的文档。

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

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