0

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

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

我希望拒绝这些类型的命令。当程序尝试运行系统命令时,如何将“权限被拒绝”显示为输出?

这是我的代码。

PHP 脚本包含 -

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

如果 C 程序包含-

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

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

4

2 回答 2

1

Windows runas 命令

您也许可以使用 windowsrunas命令以特定用户身份运行命令。在该用户的个人资料中,设置白名单命令列表。 https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows

滚动你自己的命令白名单

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

于 2013-04-25T13:35:14.623 回答
0

好的,所以简单的答案是“不要以 root 身份运行”(然后用户只能访问他/她创建的文件,所以造成损害的可能性不大)

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

于 2013-04-25T13:29:54.437 回答