gpt4 book ai didi

clojure - 在 Clojure 中安全地解析映射

转载 作者:行者123 更新时间:2023-12-02 10:30:31 25 4
gpt4 key购买 nike

我正在寻找一种简单而安全的方法来从不受信任的来源提供的字符串中解析 map ,并且仅解析 map 。该 map 包含关键字和数字。使用 read 执行此操作有哪些安全问题?

最佳答案

read 默认情况下完全不安全,它允许执行任意代码。尝试使用 (read-string "#=(println\"hello\")") 作为示例。

您可以通过将 *read-eval* 绑定(bind)到 false 来使其更安全。如果使用 #= 表示法,这将导致触发异常。例如:

(绑定(bind) [*read-eval* false] (read-string "#=(println\"hello\")"))

最后,根据您的使用方式,提供大量关键字(:foo、:bar)可能会导致拒绝服务攻击。关键字被保留并且永远不会释放,因此如果使用足够多的关键字,进程将耗尽内存。有some discussion关于 clojure-dev 列表中的内容。

关于clojure - 在 Clojure 中安全地解析映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com