1

システムを 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 ) からリクエストを発行します。これは内部要求でも同じですか。

ごきげんよう、ヘンドリック

4

1 に答える 1

2

AppEngine が IP アドレスを開示するとは思わない。AppEngine は、インスタンスがスピンアップおよびスピンダウンする動的な環境であり、状況が変化すると、さまざまな IP からの要求が発生します。

AppEngine から HTTP リクエストを作成すると、リクエストが AppEngine からのものであることを示すためにいくつかのヘッダー フィールドが設定されます。AppId が含まれていると思います。とにかく、ここにそのドキュメントがあります。

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

セキュリティの観点からは、誰でも偽の HTTP ヘッダーを作成できます。したがって、認証の手段としてそれを信頼することはありません。

于 2013-07-11T19:30:07.440 に答える