C程序中的块系统命令


Block system commands in a C program

我正在Windows XP服务器上编译并执行一个使用PHP系统命令的C程序。

如果C程序包含像System("shutdown -a")这样的系统命令或任何系统命令,那么它会关闭我的系统。

我希望拒绝这类命令。当程序试图运行系统命令时,我如何显示"拒绝许可"作为输出?

这是我的代码

system(gcc code.c -o out);    system(out.exe);

如果C程序包含-

int main()     {      system("shutdown -r");   }

是否有办法阻止这些命令的运行?

Windows runas命令

您可能能够使用windows runas命令作为特定用户运行命令。在该用户的配置文件中,设置一列白名单命令。https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows

滚动您自己的命令白名单

在PHP或C中创建一个允许在C程序中运行的命令列表,如果命令不在批准列表中,则拒绝该命令。或者你喜欢危险的生活,创建一个黑名单,并定义一堆你不想运行的事情。

好的,所以简单的答案是"不要以root身份运行"(这样用户只能访问他/她创建的文件,这样就没有那么多破坏的机会了)

更复杂的答案是将代码的运行外包到服务器内的虚拟机上。虚拟机可以在相当短的时间内从模板(或任何虚拟机软件称为这样的东西)克隆出来。在VM中,运行在那里的代码无法访问它所运行的"真实"机器,所以如果用户想要销毁他/她的虚拟机,那是他/她的问题——在他们可以继续工作之前,只需要请求一个"新的虚拟机"。