If you don't need the on-the-wire form to be human-readable, you should
look at `racket/fasl`: https://docs.racket-lang.org/reference/fasl.html It
can handle all of the acyclic data that `read` and `write` can (plus a
little extra), it *doesn't* have `read`'s many configuration parameters
that aren't really helpful for plain old data serialization, and it's fast
and efficient.

For a human-readable format, `call-with-default-reading-parameterization`
is the right answer.

-Philip


On Sun, Feb 28, 2021 at 5:33 PM Ryan Kramer <[email protected]>
wrote:

> Thanks everyone. I feel fine to use `read` for this use case now. I
> overlooked `call-with-default-reading-parameterization` which specifically
> mentions "reading from untrusted sources" so that is very reassuring.
>
> On Sunday, February 28, 2021 at 3:36:29 PM UTC-6 John K wrote:
>
>>
>>
>> On Feb 28, 2021, at 2:50 PM, Ryan Kramer <[email protected]> wrote:
>>
>>
>> […]
>>
>>
>> I could use JSON or XML, but that just seems silly when you have a Racket
>> client talking to a Racket server.
>>
>> Are my concerns founded? Are there any existing solutions? Thanks for any
>> advice.
>>
>>
>> I don’t think this necessarily answers your question, at least not
>> directly, but receiving code from a remote client is certainly a potential
>> security risk.
>>
>> Fortunately, Racket is well-adapted to writing (and parsing) a language
>> (DSL) inside of the language.
>>
>> Personally I’m a fan of object capability mechanisms. In Scheme and
>> Racket, some interesting places to start might be
>>
>> * Jonathan Rees’ Scheme-based “security kernel” paper:
>> http://mumble.net/~jar/pubs/secureos/secureos.html
>> * Marketplace by Tony Garnock-Jones: http://tonyg.github.io/marketplace/
>>
>> Christoper Lemmer Webber (may be on this list even?) is working on
>> something called Spritely Goblins, an implementation, in Racket, of the
>> CapTP/VatTP protocols that were invented by Mark Miller and others in the E
>> language (
>> http://www.erights.org/elib/capability/ode/ode-capabilities.html) and
>> now being used in Javascript/SES.
>>
>> * https://docs.racket-lang.org/goblins/index.html
>>
>> And finally, for serializing object (capabilities), the other piece of
>> relevant interesting work is CapnProto by Kenton Varda:
>> https://capnproto.org/
>>
>> Have fun :)
>>
>> - johnk
>>
>>
>> --
>> 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/a2580765-3cc2-482b-8d20-f62dc1e1dc91n%40googlegroups.com
>> <https://groups.google.com/d/msgid/racket-users/a2580765-3cc2-482b-8d20-f62dc1e1dc91n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>>
>> --
> 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/cf2a07a1-adff-4a4b-9856-679c98c797cfn%40googlegroups.com
> <https://groups.google.com/d/msgid/racket-users/cf2a07a1-adff-4a4b-9856-679c98c797cfn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/01000178016e58fb-d8cf5929-bf98-4cc3-add5-95f2b33fb63a-000000%40email.amazonses.com.

Reply via email to