gpt4 book ai didi

ruby-on-rails - 在将用户输入传递给 %x(执行它)之前,我应该如何清理用户输入?

转载 作者:数据小太阳 更新时间:2023-10-29 07:44:42 25 4
gpt4 key购买 nike

我从用户那里获取输入字符串并将其用作命令行后端程序的参数。

确保此输入“安全”的最佳方法是什么?也就是说,他们没有在字段中插入“; cd/; rm -rf”或其他一些丑陋的东西?

没有任何 sanitizer 我有...

@query = params[:query]
@result = %x( mycommand #{@query} )

我需要获取命令的输出,所以我不能使用 system("command","parameters"),因为它只会返回 true 或 false,但会提供保护。

我知道这很危险...提前致谢。

最佳答案

始终,始终定义您将接受什么,然后拒绝其他一切。人们常常试图允许一切,然后否认坏事。

  1. 从人物开始。 IE。如果mycommand 只需要字母数字输入加空格则只允许那。没有机会"rm -rf/"偷偷摸摸的,也不行的其他 10,000 件需要的东西标点符号。
  2. 还有吗mycommand 的句法/语义你可以用它来定义“好”输入?比如它恰好需要 2空格分隔的参数?

在不知道 mycommand 是什么的情况下,我无法提供具体细节,但你明白了:不要试图扔掉坏东西;定义有效并丢弃其他所有内容。请注意,这仍然很难,但如果没有这种方法,这几乎是不可能的。

关于ruby-on-rails - 在将用户输入传递给 %x(执行它)之前,我应该如何清理用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/899277/

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