I quickly ported my Perl system for this, a little messy/unstructured
- but if someone wants to take from there, sweet.
in app_globals you define a regex series for valid referers
in controllers you just add
require_local_referer= True
which pulls the __before__ method, or call
_redirect_on_invalid_referer yourself.
- lib/app_globals.py
valid_referers_regex= [
re.compile('http:\/\/(\w*\.)?findmeon\.com',re.IGNORECASE),
re.compile('http:\/\/127\.0\.0\.1',re.IGNORECASE),
]
- lib/base.py
class BaseController(WSGIController):
require_local_referer= False
def __before__(self):
if self.require_local_referer:
self._redirect_on_invalid_referer()
def _redirect_on_invalid_referer(self):
"""
redirects user to no-referer security page if unregistered
referer header
"""
referer= request.environ.get("HTTP_REFERER")
if referer is None:
referer= ''
valid= False
for regex in g.valid_referers_regex:
if regex.match( referer ):
valid= True
if not valid:
redirect_to('/security/no-referer')
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---