6

タスク キューの URL を悪意のあるアクセスから保護したいと考えています。

タスク キューが要求するビューでは、次のようなものがあります。

if not users.is_current_user_admin():
    return HttpResponse(status=403)

しかし、私のタスク キューは 403 エラーを受け取ります! この GAE ドキュメントから、Task Queue ユーザーは管理者であることが保証されているという印象を受けました。何を与える?

注:私は DjangoNonRel を使用しているため、管理者のみの URL アクセスを myapp.yamlで指定することはできません。ビューでプログラムで行う必要があります。

4

3 に答える 3

10

タスクはlogin: admin制限を回避できますがusers.is_current_user_admin()、技術的に現在のユーザーがいないため、依然として false を返します。

Django-nonrel を使用しても、app.yaml でタスクを保護することはできません。Django キャッチオールの上に保護されたハンドラーを追加するだけです。

handlers:    

- url: /tasks/.+
  script: main.py
  login: admin

- url: .*
  script: main.py

/tasks/ で始まるすべての URL は、ルーティング方法を変更しなくても、タスク キューにアクセスできますが、管理者以外の訪問者はアクセスできません。

于 2011-05-05T22:59:32.737 に答える
5

ハンドラーは、X-AppEngine-QueueName などのタスク キューの HTTP ヘッダーを探すことができます。

公式GAEドキュメントから:

タスク キュー サービスからの要求には、次の HTTP ヘッダーが含まれます。

X-AppEngine-QueueName
X-AppEngine-TaskName
X-AppEngine-TaskRetryCount
X-AppEngine-TaskExecutionCount
X-AppEngine-TaskETA

これらのヘッダーは、Google App Engine によって内部的に設定されます。リクエスト ハンドラがこれらのヘッダーのいずれかを見つけた場合、そのリクエストがタスク キュー リクエストであると信頼できます。 上記のヘッダーのいずれかがアプリへの外部ユーザー リクエストに存在する場合、それらは削除されます。

于 2012-07-03T10:28:43.413 に答える