gpt4 book ai didi

ruby-on-rails - 防止通过 URL 输入注入(inject)

转载 作者:行者123 更新时间:2023-12-02 07:38:50 26 4
gpt4 key购买 nike

在我的 Rails Controller 中,我获取用户输入的 URL 并运行系统命令 wget:

system("wget #{url}")

我担心用户可能会输入类似 www.google.com && rm -rf . 的内容,这会使 Controller 执行命令

system("wget www.google.com && rm -rf .")

这会删除所有内容。我应该如何防止这种攻击?我不确定用户还可以放入哪些其他东西来损害我的系统。

最佳答案

根据 this thread :

您可以通过将参数单独传递给脚本来避免 shell 扩展:

system("/bin/wget", params[:url])

根据 Kernel#system 上的文档这种形式不调用 shell。像 && 这样的结构是 shell 结构,所以如果你使用这种形式,那么参数将作为参数传递给 /bin/wget

也就是说,仍然对输入持怀疑态度,在可能的情况下进行清理,如果可行,以非特权(或者更好的是,被监禁)用户身份运行它。

关于ruby-on-rails - 防止通过 URL 输入注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337768/

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