gpt4 book ai didi

从用户数据创建 Clojure 关键字的安全隐患?

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

假设我获取用户提供的字符串 userstring,并对其进行调用(关键字 userstring)。

这样做有任何安全问题吗?如果是这样,缓解这些问题的最佳方法是什么?

最佳答案

http://clojure.org/reader ,符号和关键字中的字符有效是有规则的。 (目前,字母数字字符和 *+!-_?。)您不应该创建包含任何其他字符的符号。然而,目前,编译器完全不强制执行这些规则。

最多您可能会得到无效的关键字。在最坏的情况下,你可能会遇到邪恶/危险的事情,例如米哈乌·马尔奇克说道。请记住,#=() 可用于在读取时运行任意代码,因此您甚至不必评估字符串是否会发生不好的事情,您只需读取它.

(keyword "foo #=(steal-passwords-and-delete-hard-drive)")

(请参阅 (doc *read-eval*) 了解如何禁用此行为,但默认情况下会启用 read-eval。)

我认为清理用户输入的一般规则适用于此。精确定义您想要允许的内容,并默认禁止其他所有内容。也许允许类似正则表达式 #"[a-zA-Z0-9*+!-_?]+" 的内容,可能还包含其他字母数字,具体取决于您所说的语言。

关于从用户数据创建 Clojure 关键字的安全隐患?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2869371/

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