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
-~----------~----~----~----~------~----~------~--~---

Reply via email to