Djangae-scaffold provides a good skeleton project setup with various security libraries included and settings configured as a starting point.
Djangae also provides the following features to aid security:
djangae.contrib.security.middleware.AppEngineSecurityMiddleware is a Django middleware which
patches certain parts of App Engine and its libraries, specifically:
- It wraps the
fetchandmake_fetch_callfunctions ofgoogle.appengine.api.urlfetchto make the following changes:- The default value of the
validate_certificateargument is changed fromFalsetoTrue. - If the
urlargument starts withhttprather thanhttpsthen a warning is logged. This doesn't block execution.
- The default value of the
- The Python
yamllibrary is patched so that the default loader isyaml.loader.SafeLoaderin order to prevent arbitrary Python code execution. - The Python
jsonlibrary is patched so that the default encoder class escapes the HTML entities<,>and&.
This middleware applies the patches and then raises django.core.exceptions.MiddlewareNotUsed so that it does not re-apply the patches on subsequent requests. Note that in tests which don't load any middleware the patches will not be applied.