Chr*_* W. 6 django google-app-engine task-queue django-nonrel djangoappengine
我希望保护我的任务队列URL免受恶意访问.
在任务队列请求我的视图中:
if not users.is_current_user_admin():
return HttpResponse(status=403)
Run Code Online (Sandbox Code Playgroud)
但我的任务队列收到403错误!我从这个GAE文档中得到的印象是,任务队列用户已被gauranteed称为管理员.是什么赋予了?
注意:我正在使用DjangoNonRel,所以我无法在我的指定管理员唯一的URL访问app.yaml,我必须在视图中以编程方式.
Dre*_*ars 10
任务可以绕过login: admin限制,但users.is_current_user_admin()仍然会返回false,因为技术上没有当前用户.
使用Django-nonrel不应该阻止您使用app.yaml保护您的任务.只需在Django catch-all上面添加一个受保护的处理程序:
handlers:
- url: /tasks/.+
script: main.py
login: admin
- url: .*
script: main.py
Run Code Online (Sandbox Code Playgroud)
任何以/ tasks /开头的URL都可以被任务队列访问,非管理员访问者无法访问,而不会改变任何路由.
您的处理程序可以查找任务队列HTTP标头,例如X-AppEngine-QueueName。
来自任务队列服务的请求包含以下HTTP标头:
X-AppEngine-QueueName
X-AppEngine-
TaskName
X-AppEngine- TaskRetryCount X-AppEngine-TaskExecutionCount
X-AppEngine-TaskETA这些标头由Google App Engine在内部设置。如果您的请求处理程序找到这些标头中的任何一个,它就可以相信该请求是任务队列请求。 如果您的应用程序的外部用户请求中存在上述任何标头,则会将其剥离。
| 归档时间: |
|
| 查看次数: |
996 次 |
| 最近记录: |