You are entirely right: I stand corrected. What an oddity that they make no mention of this in RFC 2616... Well, that's that, then. No more pesky inline login forms for me!
Thanks :) yejun wrote: > From rfc 2617. > http://www.ietf.org/rfc/rfc2617 > > Digest authentication uses 'stale' to indicate whether client should > require user reenter credential information. It seems to me that > should mean a message of terminating current session. > > On Oct 27, 2:44 pm, Hraban Luyat <[EMAIL PROTECTED]> wrote: >> Aaron Swartz wrote: >>> Here's an excerpt from the book I'm working on about building >>> programmable web apps. It almost makes me want to take the sessions >>> module out of web.py. What do people think? Here it is: >>> The second major choice [in designing the Web] was that the Web would >>> be "stateless". Imagine a network connection as your computer phoning >>> up HQ and starting a conversation. In a stateful protocol, these are >>> long conversations -- "Hello?" "Hello, welcome to Amazon. This is >>> Shirley." "Hi Shirley, how are you doing?" "Oh, fine, how are you?" >>> "Oh, great. Just great." "Glad to hear it. What can I do for you?" >>> "Well, I was wondering what you had in the Books department." "Hmm, >>> let me see. Well, it looks like we have over 15 million books. Could >>> you be a bit more specific?" "Well, do you have any by Dostoevsky?" >>> (etc.). But the Web is stateless -- each connection begins completely >>> anew, with no prior history. >>> This has its upsides. For one thing, if you're in the middle of >>> looking for a book on Amazon but right as you're about to find it you >>> notice the clock and geebus! it's late, you're about to miss your >>> flight! So you slam your laptop shut and toss it in your bag and dash >>> to your gate and board the plane and eventually get to your hotel >>> entire _days_ later, there's nothing stopping you from reopening your >>> laptop in this completely different country and picking up your search >>> right where you left off. All the links will still work, after all. A >>> stateful conversation, on the other hand, would never survive a >>> day-long pause or a change of country. (Similarly, you can send a link >>> to your search to a friend across the globe and you both can use it >>> without a hitch.) >>> It has benefits for servers too. Instead of having each client tie up >>> part of a particular server for as long as their conversation lasts, >>> stateless conversations get wrapped up very quickly and can be handled >>> by any old server, since they don't need to know any history. >>> Some bad web apps try to avoid the Web's stateless nature. The most >>> common way is thru session cookies. Now cookies certainly have their >>> uses. Just like when you call your bank on the phone and they ask you >>> for your account number so they can pull up your file, cookies can >>> allow servers to build pages customized just for you. There's nothing >>> wrong with that. >>> (Although you have to wonder whether users might not be better served >>> by the more secure Digest authentication features built into HTTP, but >>> since just about every application on the Web uses cookies at this >>> point, that's probably a lost cause. There's some hope for improvement >>> in HTML5 (the next version of HTML) since they're-- oh, wait, they're >>> not fixing this. Hmm, well, I'll try suggesting it.[^w]) >>> [^w]:http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2008-October/0167... >>> The real problem comes when you use cookies to create sessions. For >>> example, imagine if Amazon.com just had one URL: >>> http://www.amazon.com/The first time you visited it'd give you the >>> front page and a session number (let's say 349382). Then, you'd send >>> call back and say "I'm session number 349382 and I want to look at >>> books" and it'd send you back the books page. Then you'd say call back >>> and say "I'm session number 349382 and I want to search for >>> Dostoevsky". And so on. >>> Crazy as it sounds, a lot of sites work this way (and many more used >>> to). For many years, the worst offender was probably a toolkit called >>> WebObjects, which most famously runs Apple's Web store. But, after >>> years and years, it seems WebObjects might have been fixed. Still, new >>> frameworks like Arc and Seaside are springing up to take its place. >>> All do it for the same basic reason: they're software for building Web >>> apps that want to hide the Web from you. They want to make it so that >>> you just write some software normally and it magically becomes a web >>> app, without you having to do any of the work of thinking up URLs or >>> following REST. Well, you may get an application you can use through a >>> browser out of it, but you won't get a web app. >> Hi Aaron, >> >> RFC 2616: HTTP/1.1, Section 15.6: >> >> >> >>> 15.6 Authentication Credentials and Idle Clients >>> Existing HTTP clients and user agents typically retain authentication >>> information indefinitely. HTTP/1.1. does not provide a method for a >>> server to direct clients to discard these cached credentials. This is >>> a significant defect that requires further extensions to HTTP. >>> Circumstances under which credential caching can interfere with the >>> application's security model include but are not limited to: >>> - Clients which have been idle for an extended period following >>> which the server might wish to cause the client to reprompt the >>> user for credentials. >>> - Applications which include a session termination indication >>> (such as a `logout' or `commit' button on a page) after which >>> the server side of the application `knows' that there is no >>> further reason for the client to retain the credentials. >>> This is currently under separate study. There are a number of work- >>> arounds to parts of this problem, and we encourage the use of >>> password protection in screen savers, idle time-outs, and other >>> methods which mitigate the security problems inherent in this >>> problem. In particular, user agents which cache credentials are >>> encouraged to provide a readily accessible mechanism for discarding >>> cached credentials under user control. >> (Source: <http://www.ietf.org/rfc/rfc2616.txt>) >> >> That is the reason for HTTP authentication not finding wide deployment. >> In my applications, at least. Of course, it doesn't "look pretty", yes, >> that's an added problem, but using existing and well-tested mechanisms >> like this requires less code and is thus less error-prone. If HTTP/1.1 >> provided a logout functionality we'd see a whole lot less SQL injection >> attacks in login forms. Simply because they wouldn't exist. >> >> I will leave your real point ("web applications should be stateless") >> untouched, though :). For today. >> >> Greetings. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web.py" group. To post to this group, send email to webpy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/webpy?hl=en -~----------~----~----~----~------~----~------~--~---