if cherrypy.request.method != "POST":
raise cherrypy.HTTPError(405,
"You must submit this request with POST")
+ if not cherrypy.request.headers.get('Referer', '').startswith('https://' + config.web.hostname):
+ raise cherrypy.HTTPError(403, "This form is only usable when submitted from another page on this site. If you receive this message in error, check your browser's Referer settings.")
cherrypy.tools.require_POST = cherrypy.Tool('on_start_resource',
require_POST, priority=150)
+invirt-web (0.1.18) unstable; urgency=low
+
+ * Require a valid Referer header for any POSTed form, as a guard against
+ cross-site request forgery.
+
+ -- Joshua Oreman <oremanj@mit.edu> Sat, 07 May 2011 22:34:46 -0400
+
invirt-web (0.1.17) unstable; urgency=low
* Add support for amd64 and i386 squeeze autoinstalls.