我有一个程序可以让用户用 jq 解析 JSON 数据。我选择使用 jq 而不是使用库,因为我发现的那些行为怪异且不一致。我遇到的问题是 jq 通常有|
(管道)字符,这可能会让用户运行非 jq 命令。例如:
jq . | rm file.txt
我如何安全地让用户运行它?
现在,我在 Go 中调用它(其中 file.txt 包含原始 json):
cmd = exec.Command("bash", "-c", fmt.Sprintf("cat file.txt | %s", cmd))
谢谢!
编辑:正如多次指出的那样,这个问题与管道命令无关。它是关于如何安全地执行其中包含管道的 jq 命令。我不希望用户这样做: curl 'api.icndb.com/jokes/random/3' | jq -r '.value[] | .笑话 | rm 文件.txt'。请重新打开。
达令说
相关分类