我正在编译并执行在Windows XP Server上使用PHP系统命令的C程序。
如果C程序包含System("shutdown -a")
之类的系统命令或任何系统命令,那么它会关闭我的系统。
我希望拒绝这些命令。当程序尝试运行系统命令时,如何将“权限被拒绝”显示为输出?
这是我的代码。
PHP脚本包含 -
system(gcc code.c -o out); system(out.exe);
IF C程序包含 -
int main() { system("shutdown -r"); }
有没有办法阻止这些命令运行?
答案 0 :(得分:1)
Windows runas命令
您可以使用windows runas
命令以特定用户身份运行命令。在该用户的配置文件中,设置列出的白名单。 https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows
滚动您自己的命令白名单
在PHP或C中创建允许通过C程序运行的命令列表,如果该命令不在批准列表中,则拒绝该命令。或者你喜欢危险地生活,创建一个黑名单,并定义一些你不想运行的东西。
答案 1 :(得分:0)
好的,所以简单的答案是“不要以root身份运行”(那么用户只能访问他/她创建的文件,所以没有那么多的机会造成伤害)
更复杂的答案是将代码运行到服务器内的虚拟机上。可以在相当短的时间内从模板(或VM软件所谓的任何东西)克隆虚拟机。在VM中,在那里运行的代码无法访问它运行的“REAL”机器,因此如果用户想要销毁他/她的虚拟机,那就是他/她的问题 - 只需要请求“新虚拟”机器“在他们继续工作之前。