standard google engine app python google-app-engine webapp2

python - engine - ¿Hay alguna solución disponible para proporcionar soporte xsrf/csrf para el motor de aplicaciones de Google?



import webapp2 (3)

Hice un decorador:

def csrf_protected(handler): def inner(self, *args, **kwargs): token = self.request.params.get(''token'') if token and self.session.get(''csrf'') == token: self.session[''csrf''] = uuid.uuid1().hex handler(self, *args, **kwargs) else: self.abort(400) return inner

Tener token en plantilla y sesión

La falsificación de solicitudes entre sitios es común en la web hoy en día. Me enfrento a esto en mi propio sitio desplegado en el motor de Google App. Llegué a saber esto al examinar los registros de acceso. ¿Hay alguna biblioteca XSRF / CSRF u otra solución disponible para el motor de la aplicación que pueda usar? ¿Y cuánta carga agregará a mi sitio?



Utilizo este código llamado desde la función de solicitud de inicio de basehandler

def init_csrf(self): """Issue and handle CSRF token as necessary""" self.csrf_token = self.request.cookies.get(''c'') if not self.csrf_token: self.csrf_token = str(uuid4())[:8] self.set_cookie(''c'', self.csrf_token) if self.request.method == ''POST'' and self.csrf_protect / and self.csrf_token != self.request.get(''_csrf_token''): raise CsrfException(''Missing or invalid CSRF token.'')

Lo tomé de la aplicación de lienzo de ejemplo de Facebook que incluye código para manejar crsf. Prácticamente no lo probé mucho, pero lo incluyo en mi proyecto porque tengo una aplicación de lienzo para Facebook que se ejecuta en FB como un iframe. Hace que cada manejador de solicitudes tenga una variable de instancia que puede establecer en falso si genera una excepción para los casos normales.

Todavía no lo probé a fondo, pero este es el material que tengo sobre los tokens CRSF para Google App Engine en python. Si desea ver los detalles exactamente de qué manera estoy aprendiendo a usarlos, puede clonar mi repositorio .