6

Quiero asegurar mis URL de Task Queue contra el acceso malicioso.Proteger correctamente las URL de GAE Task Queue (sin usar app.yaml)

En los puntos de vista de que la cola de tareas pide Tengo:

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

Pero mis colas de tareas están recibiendo 403 errores! Tenía la impresión de this GAE documentation de que el usuario de Task Queue estaba garantizado como administrador. ¿Lo que da?

NOTA: estoy usando DjangoNonRel así que no puedo especificar el administrador único acceso URL en mi app.yaml, tengo que hacerlo mediante programación de las vistas.

Respuesta

10

Las tareas pueden pasar por alto las restricciones de login: admin, sin embargo, users.is_current_user_admin() todavía devolverá falso, ya que técnicamente no hay un usuario actual.

El uso de Django-nonrel no debe impedir que proteja sus tareas con app.yaml. Sólo tiene que añadir un manejador protegida por encima de su Django engloba todo:

handlers:  

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

- url: .* 
    script: main.py 

Cualquier URL que comienzan con/tareas/serán accesibles a la cola de tareas e inaccesible a los visitantes que no son administradores, sin necesidad de cambiar la forma en rutas nada.

+0

Nice. Eso es perfecto. Gracias. –

4

Los controladores pueden buscar un encabezado HTTP de la cola de tareas, como X-AppEngine-QueueName.

de Official GAE docs:

Las peticiones del servicio de cola de tareas contiene los siguientes encabezados HTTP:

X-AppEngine-NombreCola
X-AppEngine-TaskName
X-AppEngine-TaskRetryCount
X-AppEngine-TaskExecutionCount
X-AppEngine-TaskETA

Google App Engine establece estos encabezados internamente. Si su controlador de solicitud encuentra alguno de estos encabezados, puede confiar en que la solicitud es una solicitud de Tarea en cola. Si alguno de los encabezados anteriores es presente en una solicitud de usuario externa a su aplicación, se eliminan.

Cuestiones relacionadas