2013-04-25 35 views
0

我正在编译和执行在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"); } 

有没有办法来阻止正在运行这些命令?

+0

Puh。这确实是一个很难的问题。什么可以限定系统命令?以及哪个GCC版本准确? – hakre 2013-04-25 13:26:36

+0

从System32文件夹中删除“shutdown.exe”是一个好转的过程吗? – 2013-04-25 13:28:37

回答

1

的Windows runas命令

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

推出自己的命令白名单

创建一个允许通过C程序运行PHP或C命令的列表,如果该命令是不批准的名单上,它被拒绝。或者你喜欢过着危险的生活,创建一个黑名单,并定义一些你不想运行的东西。

0

好了,简单的答案是:“不要以root身份运行”(那么用户只能访问文件,他/她所创建的,所以没有那么多的做损害的可能性)

更复杂的答案是将代码运行到服务器内的虚拟机上。虚拟机可以在相当短的时间内从模板(或VM软件调用的这种东西)克隆。在虚拟机中,运行在那里的代码无法访问运行的“REAL”机器,因此如果用户想要销毁他/她的虚拟机,那就是他/她的问题 - 只需要请求一个“新虚拟机机器“,然后才能继续工作。