【发布时间】:2012-05-04 22:04:26
【问题描述】:
我听到有人说来自libc 的system() 呼叫不安全。
我能想到的一个原因是它启动了 shell 实用程序,例如/bin/bash 并且如果 system("rm -rf $input") 已启动并且 $input 是未经处理的用户输入,那么如果 $input="/" 可能会造成严重破坏。
还有什么其他原因?
【问题讨论】:
-
@Mat 当输入被严格输入和清理时不会
-
@NulledPointer 我希望您所说的“净化”是指“列入白名单”。否则......好吧,让我们说它比你想象的要难。
-
@CharlesDuffy 他们之间确实有很大的不同。是的,它们被“列入白名单”。它与您如何指定 sudoer 可以执行的命令列表完全一样(来自 /etc/sudoers)。
-
@CharlesDuffy 另外我认为我们应该求助于
fork()和exec()而不是懒惰并致电system()。