在C程序中阻塞系统命令
问题描述:
我正在编译和执行在Windows XP Server上使用PHP系统命令的C程序。在C程序中阻塞系统命令
如果C程序包含像System("shutdown -a")
这样的系统命令或任何系统命令,那么它会关闭我的系统。
我想要这些类型的命令被拒绝。当程序尝试运行系统命令时,如何显示“权限被拒绝”作为输出?
这是我的代码。
PHP脚本载有以下
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
推出自己的命令白名单
创建一个允许通过C程序运行PHP或C命令的列表,如果该命令是不批准的名单上,它被拒绝。或者你喜欢过着危险的生活,创建一个黑名单,并定义一些你不想运行的东西。
答
好了,简单的答案是:“不要以root身份运行”(那么用户只能访问文件,他/她所创建的,所以没有那么多的做损害的可能性)
更复杂的答案是将代码运行到服务器内的虚拟机上。虚拟机可以在相当短的时间内从模板(或VM软件调用的这种东西)克隆。在虚拟机中,运行在那里的代码无法访问运行的“REAL”机器,因此如果用户想要销毁他/她的虚拟机,那就是他/她的问题 - 只需要请求一个“新虚拟机机器“,然后才能继续工作。
Puh。这确实是一个很难的问题。什么可以限定系统命令?以及哪个GCC版本准确? – hakre 2013-04-25 13:26:36
从System32文件夹中删除“shutdown.exe”是一个好转的过程吗? – 2013-04-25 13:28:37