yes the second- im thinking more and more that session.secure() should 
create a whole new secure session cookie, rather than trying to secure the 
existing one- it seems like that's the only way to effectively handle mixed 
mode- but I'm not familiar enough with the implementation to know how much 
work that would be- I'll leave it to you to make that call

On Monday, October 1, 2012 3:24:19 PM UTC-4, Niphlod wrote:
>
> maintaining as in "use that session also for http" ? if that's the case, 
> there is no issue: secured cookies are sent only back to a https, so it's a 
> no-go.
>
> if "maintaining" is meant as "retrieve the previously issued cookie only 
> for https pages" then we can inspect it further. Generally web2py does 
> nothing to "delete" a created cookie: it's browser's job to send it back 
> (but I'm not sure how them behave in "mixed" mode, i.e. some requests to 
> http and some to https.)
> I'm going to test it.
>
> On Monday, October 1, 2012 7:07:17 PM UTC+2, Yarin wrote:
>>
>> Forget 2 its irrelevant- I'm only securing session for HTTPS requests, 
>> but what I'm concerned with is maintaining the secure session even if an 
>> HTTP request slips in.
>>
>> For example, I had this in my model to force HTTPS and secure the session 
>> (basically the same as request.requires_https()):
>> if request.env.wsgi_url_scheme in ['https', 'HTTPS']:
>>     session.secure()
>> else:
>>     redirect(URL(scheme='https', args=request.args, vars=request.vars))
>>
>> The intended result being that when a user navigates to myapp.com, 
>> they'll get redirected to https and dumped into whatever secure session 
>> exists. But right now they'll always bump into the login screen instead.
>>
>> Perhaps this is the purview of mod_rewrite instead of web2py, and indeed 
>> that might be what twitter is doing, gonna look now- im just wondering if 
>> maybe our implementation should retain the secured session separately, 
>> instead of blowing it out whenever we recreate a new non-secured one. Open 
>> for discussion
>>  
>>
>> On Monday, October 1, 2012 12:32:00 PM UTC-4, Niphlod wrote:
>>>
>>> uhm. session.secure() is only meant to add the "Secure" bit to the 
>>> cookie. 
>>> Then it's browser's responsibility to communicate with the domain of the 
>>> cookie only submitting that cookie over https....
>>> In a normal web-app, if you use http://domain.com/whatever to issue out 
>>> a cookie, that cookie should never be set as secure if you want it back in 
>>> the following request to http://domain.com/whatever2. 
>>> Before calling session.secure() you should check that the user is in the 
>>> https "realm" and all the pages requested after that 1st one are in the 
>>> https realm, because the browser will not send the same cookie (secured) 
>>> you issued in the https:// page to a http:// page. That's pretty much the 
>>> "good" thing about Secured cookies: you are sure that noone can see the 
>>> cookie your server and your user exchange.
>>>
>>> Let's think about your requirements and then see what web2py can achieve.
>>>
>>> 1) You have a user hitting https://domain.com/whatever, he logins and 
>>> web2py issues him a secured cookie (because you want to be sure noone is 
>>> there between your server and your user). 
>>> 2) your user hits http://domain.com/whatever2 : at this point, because 
>>> the 1st cookie shipped was secure, no cookie is sent back from the browser 
>>> to the server, so it seems to web2py that your user is hitting 
>>> domain.com for the first time. If you want on http:// the same session 
>>> data you had on 1), you shouldn't use session.secure() at all.
>>> 3) let's pretend that on 2) you don't need session at all. But you'd 
>>> like the user to go to https://domain.com/whatever3 and send back the 
>>> cookie he received on https://domain.com/whatever, so web2py can 
>>> recognize, e.g., he's already logged-in. 
>>>
>>> This kind of behaviour is more a browser's one than a web2py one, but 
>>> perhaps something can be adjusted.
>>> Are you saying that on step 3) browser sends no cookie back to web2py ? 
>>>
>>> ps: are you sure twitter uses cookies with "Secure;" ?
>>>
>>> Il giorno lunedì 1 ottobre 2012 17:43:25 UTC+2, Yarin ha scritto:
>>>>
>>>> I'm bumping up against a problem in the session.secure() implementation.
>>>>
>>>> If a session is secured, and then the app is hit with an http request, 
>>>> the session is blown out. This happens even if the session isn't modified 
>>>> by the http request and even if it is immediately redirected to https.
>>>>
>>>> The consequence of this is that using request.requires_https() or any 
>>>> other SSL enforcement will cause users to be repeatedly logged out if 
>>>> they're not accessing the site directly through HTTPS.
>>>>
>>>  
>>>
>>>>
>>>> For instance, if I go to (http://)twitter.com, Twitter forces a 
>>>> redirect to https://twitter.com, and if i was logged in before my 
>>>> session will still be there. Right now it seems impossible to do this with 
>>>> web2py. 
>>>>
>>>

-- 



Reply via email to