I don't understand your question. The net-cookies package is very good for arbitrary cookies and the id-cookie library I linked to is very good for just authentication. The posts prior to your question contain this information, so what are you asking?
Jay On Sat, Dec 26, 2015 at 8:33 AM, Daniel Brunner <[email protected]> wrote: > Btw, what's the "standard" way to handle cookies? I learned from the > documentation one should use the net-cookies package? > > (I am writing a small http client script and need to handle the > authentication cookies as well). > > Kind regards, > Daniel > > Am 24.12.2015 um 15:50 schrieb Marc Kaufmann: >> In short, do HTTPS with cookies and I should be fine (modulo bugs, weak >> passwords, etc). >> >> Thanks, that does answer very well the question that I didn't ask. >> >> On Thu, Dec 24, 2015 at 8:28 AM, Jay McCarthy <[email protected] >> <mailto:[email protected]>> wrote: >> >> On Wed, Dec 23, 2015 at 10:38 PM, Marc Kaufmann >> <[email protected] <mailto:[email protected]>> wrote: >> > Hi all, >> > >> > I am hopefully going to implement a minor website for gathering survey >> data for some research I am doing. Due to data privacy and so on, I want to >> be extra careful about security. First, I didn't understand the security >> concerns about URLS at http://docs.racket-lang.org/web-server/faq.html, nor >> its solution >> (see end of email for the full question which confuses me). >> > >> > Secondly, do I understand correctly that for a production-ready >> website, I would use the Racket serve/servlet - or are there other/better >> servers I would use? I've only used the serve/servlet on my local machine >> and wouldn't understand the security concerns until I was hacked (and even >> then...). >> >> There's just one serve and serve/servlet is the best way to start it, >> because it has the most options and controls, which you will probably >> want in a production system. >> >> > The question that left me more confused than reassured (primarily >> because I don't understand what HTTP traffic in the clear is - as opposed to >> HTTPS?): >> >> Yes, if I am between you and your destination, then I can see >> everything you send and receive on HTTP (and change it). In contrast, >> if you use HTTPS, then I just know what server you are talking to, but >> I don't know what URLs you are looking at or what data you are sending >> and receiving. So, most issues related to URLs don't really apply to >> HTTPS. >> >> > "10.7. What special considerations are there for security with the Web >> Server? >> > >> > The biggest problem is that a naive usage of continuations will allow >> continuations to subvert authentication mechanisms. Typically, all that is >> necessary to execute a continuation is its URL. Thus, URLs must be as >> protected as the information in the continuation. >> > >> > Consider if you link to a public site from a private continuation URL: >> the Referrer field in the new HTTP request will contain the private URL. >> Furthermore, if your HTTP traffic is in the clear, then these URLs can be >> easily poached. >> > >> > One solution to this is to use a special cookie as an authenticator. >> This way, if a URL escapes, it will not be able to be used, unless the >> cookie is present. For advice about how to do this well, see Dos and Don’ts >> of Client Authentication on the Web from the MIT Cookie Eaters. >> > >> > Note: It may be considered a great feature that URLs can be shared >> this way, because delegation is easily built into an application via URLs." >> >> You haven't really asked a question, but let me try to give you an >> example. >> >> Suppose your main function is something like >> >> (define (main req) >> (define maybe-has-the-password-req >> (send/suspend (lambda (url) "Give me your password"))) >> (if (really-has-password? maybe-has-the-password-req) >> (secure-site maybe-has-the-password-req) >> (main maybe-has-the-password-req))) >> >> Once they type in the password, they get the secure site >> >> (define (secure-site req) >> (send/suspend/dispatch >> (lambda (embed-url) >> (list "Would you like launch missiles today?" (embed-url (lambda >> (req) (launch-missiles!) (secure-site req))))))) >> >> So, the URL they start at would be like >> >> 1. http://missiles.dod.mil >> >> After they type in the password it would be >> >> 2. http://missiles.dod.mil/?k=kljdaflkfjaflkdj >> >> And once they click launch missiles it would be >> >> 3. http://missiles.dod.mil/?k=qeriudfnafurf >> >> Either of the URLs, 2 or 3, when you click on them, you will >> immediately go to the secure site whether you typed in the password or >> not in your browser, because the authentication was in the past of the >> computation. >> >> So, if you did HTTPS just for the transition from 1->2 (as some Web >> sites do) but then use HTTP after that, then the URL could be snooped >> at middle-men could be your users. >> >> Similarly, if we changed the secure site to be... >> >> (define (secure-site req) >> (send/suspend/dispatch >> (lambda (embed-url) >> (list "Would you like launch missiles today?" (embed-url (lambda >> (req) (launch-missiles!) (secure-site req))) >> (a ([href "http://downforeveryoneorjustme.com/us.gov"] >> "Check to see if you should launch"))))) >> >> Then when you click on the link, the HTTP(S) request to >> downforeveryoneorjustme.com <http://downforeveryoneorjustme.com> >> will look like >> >> GET /us.gov <http://us.gov> HTTP/1.1 >> Referrer: http://missiles.dod.mil/?k=kljdaflkfjaflkdj >> >> Thus, the admins there could launch the missiles by looking at their >> logs and clicking on the link. >> >> This referrer is always sent unless a link is from an HTTPS site to an >> HTTP site. >> >> So, basically, the summary is to not do this. Instead, make it so that >> once you type in the password, you set an authentication cookie and >> when you get to any page that requires authentication, check that the >> cookie is already there. The Racket Web server comes with a library >> for doing this: >> >> >> http://docs.racket-lang.org/web-server/http.html?q=web-server%2Fhttp%2Fid-cookie#%28mod-path._web-server%2Fhttp%2Fid-cookie%29 >> >> Jay >> >> -- >> Jay McCarthy >> Associate Professor >> PLT @ CS @ UMass Lowell >> http://jeapostrophe.github.io >> >> "Wherefore, be not weary in well-doing, >> for ye are laying the foundation of a great work. >> And out of small things proceedeth that which is great." >> - D&C 64:33 >> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Racket Users" group. >> To unsubscribe from this group and stop receiving emails from it, send >> an email to [email protected] >> <mailto:[email protected]>. >> For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. -- Jay McCarthy Associate Professor PLT @ CS @ UMass Lowell http://jeapostrophe.github.io "Wherefore, be not weary in well-doing, for ye are laying the foundation of a great work. And out of small things proceedeth that which is great." - D&C 64:33 -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

