【问题标题】:Google App Engine Server IP adressesGoogle App Engine 服务器 IP 地址
【发布时间】:2013-07-11 07:46:12
【问题描述】:

我正在将我们的系统迁移到 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) 发出请求。内部请求也是这样吗?

你好,亨德里克

【问题讨论】:

  • 您可以使用请求标头代替IP地址,标头告诉您此请求来自appengine,它还告诉您appengine appID,因此您可以识别自己的appengine应用
  • 我如何获得这个请求标头?我尝试了几种方法($_SERVER、getallheaders()),但没有人给我请求来源和 appID

标签: php google-app-engine


【解决方案1】:

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

当您从 AppEngine 发出 HTTP 请求时,它会设置一些标头字段来标记请求来自 AppEngine。我认为 AppId 包括在内。不管怎样,这里有相关文档。

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

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

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 2011-05-12
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2012-11-01
    • 2013-06-17
    相关资源
    最近更新 更多