与使用curl相比,替代方法有什么更好的选择?须藤

时间:2019-07-04 05:39:31

标签: bash shell security curl pipe

This页面将“使用curl | sudo sh”模式描述为:

  

在生产服务器上进行更改时,请使用此方法[代替]

curl -sf -L https://static.rust-lang.org/rustup.sh -o rustup.sh
less rustup.sh
chmod +x rustup.sh
sudo ./rustup.sh

我不明白为什么这比仅做curl | sudo sh更好。您下载文件并先对其进行chmod操作有什么不同?我还没有看到任何争论卷曲的替代方案。 sh以及为什么它们更好,只有卷曲的问题| sh。请解释一下上述情况如何(在某些细节上)更好,或者其他任何替代方法在某些细节上都更好。

例如,没有一个答案here解释任何替代方案或它们为什么更好。我见过的所有其他网站都一样。

主要论点是,如果有人入侵您的服务器,他们可以用其他代码代替代码。但是,任何软件包管理器都不会发生这种情况吗?我的意思是谁每次都会在npm installing之前深入检查代码,甚至是对其进行本机C扩展。这些可能会做同样的事情,尤其是在安装时运行shell脚本之前/之后。除了在bash中管道传输外,我看不出这些安全性如何。

2 个答案:

答案 0 :(得分:1)

主要区别是使用 less 。引号提示您检查已下载文件的内容。这是必需的,因为该代码未签名。程序包管理器使用签名来信任源。检查内容很重要,因为将某些内容从Web服务器直接管道传输到您的Shell中并不安全。有关说明,请参见herehere

答案 1 :(得分:1)

https://www.idontplaydarts.com/images/bashmov.gif

很明显,可以在服务器端检测到

shell重定向,并且可以通过常规检查来传递常规脚本,而在进行sh重定向时可以传递恶意有效负载,因此至少您可以避免该问题,该网站对此进行了很多解释。比我更好:https://www.idontplaydarts.com/2016/04/detecting-curl-pipe-bash-server-side/