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中管道传输外,我看不出这些安全性如何。
答案 0 :(得分:1)
主要区别是使用 less
。引号提示您检查已下载文件的内容。这是必需的,因为该代码未签名。程序包管理器使用签名来信任源。检查内容很重要,因为将某些内容从Web服务器直接管道传输到您的Shell中并不安全。有关说明,请参见here。here。
答案 1 :(得分:1)
https://www.idontplaydarts.com/images/bashmov.gif
很明显,可以在服务器端检测到shell重定向,并且可以通过常规检查来传递常规脚本,而在进行sh重定向时可以传递恶意有效负载,因此至少您可以避免该问题,该网站对此进行了很多解释。比我更好:https://www.idontplaydarts.com/2016/04/detecting-curl-pipe-bash-server-side/