Could you cryptographically sign the serialized form or something like that?

On Monday, February 22, 2021 at 8:59:29 AM UTC-8 [email protected] wrote:

> On Sun, Feb 21, 2021 at 2:35 PM [email protected] <[email protected]> wrote:
> >
> > #lang web-server is brilliant. This #lang is, in my view, a really 
> excellent example of Racket's take on language-oriented programming. I find 
> that the performance of continuations is just fine, given my limited use of 
> them, and after a while you get used to the limitations and just program 
> around them.
>
> Thanks, a lot of people contributed a ton to it, specifically: Greg
> Pettyjohn, John Clements, Joe Marshall, Shriram Krishnamurthi,
> Matthias Felleisen.
>
> >
> > One thing that always bothers me about #lang web-server, though, is that 
> there are a lot of provisos in the documentation. I'm talking about section 
> 3.2, "Usage Considerations", of 
> https://docs.racket-lang.org/web-server/stateless.html, in the part after 
> "However, there are some considerations you must make." Here a couple of 
> questions:
> >
> > + " [#lang web-server] will create an immense number of lambdas and 
> structures your program did not normally contain. The performance 
> implication of this has not been studied with Racket."
> >
> > This seems to me like an interesting research question. Has this 
> question been taken up? I've tried taking a look on Google Scholar for any 
> follow-up. I looked at citations of Jay's "Automatically RESTful web 
> applications" and "The two-state solution: native and serializable 
> continuations accord", but nothing stuck out to me (...which is not to say 
> that there may have missed something).
>
>
> I never did any more research about this. I think you could take the
> traditional Scheme benchmarks ---
>
> https://github.com/racket/racket/tree/master/pkgs/racket-benchmarks/tests/racket/benchmarks/common
> --- and add `#lang web-server` to the top and see what happens.
>
> >
> > + Some limitations of #lang web-server seem don't seem obviously 
> necessary, at least to someone who's not very familiar with the precise 
> details of the underlying program transformations. You get used to them, 
> but you wonder if there's some accessible world in which they work. For 
> example: "You may not use parameterize, because parameterizations are not 
> serializable." Is that inherently so (that is, there's no way around that, 
> no matter how clever you tweak the program transformations on which #lang 
> web-server rests), or is that just a conequence of the particular approach 
> taken (maybe it's possible, but no one has done it yet). Has there been any 
> fresh thinking about these limitations?
>
> In some sense, everything is possible, because we can just change the
> way the VM works... the existing `#lang web-server` is designed to
> never require modifications down there. In the case of `parameterize`,
> the problem is a matter of security. Consider the following program:
>
> ```
> #lang racket
> (define p (make-parameter #t))
> (define (launch-the-missiles!)
> (when (p) .....))
> (define (run-code-downloaded-from-youtube f)
> (parameterize ([p #f]) (f)))
> ```
>
> We don't want the code from YouTube to be able to launch the missiles.
> Suppose that parameterizations were serializeable, then the YouTube
> code could be something like:
>
> ```
> (lambda ()
> (call-with-parameterization
> (read (with-input-string (hack-the-planet (with-output-to-string
> (lambda () (write (current-parameterization)))))
> launch-the-missiles!))
> ```
>
> where `hack-the-planet` changes the `#f` to `#t`. That's why you can't
> inspect parameterizations or enumerate the keys in a continuation mark
> set.
>
> In general, all of the limitations of `#lang web-server` are because
> of things like this.
>
> Jay
>
> --
> Jay McCarthy
> Associate Professor @ CS @ UMass Lowell
> http://jeapostrophe.github.io
> Vincit qui se vincit.
>

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/0854aacf-b390-4bc7-8b7a-6b114c19bb5cn%40googlegroups.com.

Reply via email to