On Sep 16, 2011, at 1:56 PM, Massimo Di Pierro <[email protected]> 
wrote:

> It is not handle adequately if the app uses an external
> authentication. perhaps there is a better solution... let me think
> about this some more.
> 
> Basically the issue is this code in web2py/gluon/tools.py
> 
>        if auto_redirect and URL() in auto_redirect:
>            if not self.user:
>                if not session._auth_next:
>                    session._auth_next = URL(args=request.args,
>                                             vars=request.get_vars)
>        if auto_redirect and not URL() in auto_redirect and \
>                self.user and session._auth_next:
>            next = session._auth_next
>            session._auth_next = None
>            redirect(next)
> 
> 
> 
> should it just be?
> 
>        if not self.user:
>                if not session._auth_next:
>                    session._auth_next = URL(args=request.args,
>                                             vars=request.get_vars)
>        if self.user and session._auth_next and not self.user and
> session._auth_next.startswith(URL()):
>            next = session._auth_next
>            session._auth_next = None
>            redirect(next)
> 
> and get rid of auto_redirect?

I think so. You've got a contradictory self.user test there, though. Is the 
startswith test needed? Right? If we're already at that URL, why redirect?


> 
> 
> 
> On Sep 16, 3:27 pm, Anthony <[email protected]> wrote:
>> On Friday, September 16, 2011 3:00:59 PM UTC-4, Jonathan Lundell wrote:
>> 
>>> On Friday, September 16, 2011 2:21:07 PM UTC-4, Jonathan Lundell wrote:
>> 
>>>> Sometimes I think the need for auto_redirect is paranoid.
>> 
>>>> What's the hazard? Presumably there's nothing to stop the user from going
>>>> to the same URL after a successful login, so why not automatically?
>> 
>>> This:https://groups.google.com/d/topic/web2py/dU7018Acz9s/discussion
>> 
>>> But the auto_redirect list doesn't protect against that.
>> 
>>> As I read the code, auto-redirect after login (in the sense of going back
>>> to the target URL) a) only uses the output of URL(), with no domain (so no
>>> phishing), and b) stores its redirection in session.
>> 
>>> I didn't look too closely at the _next= logic, but it doesn't appear to
>>> care about the auto_redirect list. If those URLs need to be checked,
>>> wouldn't it be adequate to require that they're relative URLs (in the sense
>>> of not including a domain)?
>> 
>> Right, I thought you were asking about the general need to restrict what is
>> allowed in _next. I'm also confused about auto_redirect -- looks like it is
>> still limited to URLs internal to the app, which should be handled
>> adequately by the new _next logic that allows only relative URLs.
>> 
>> Anthony

Reply via email to