2013-04-25 32 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」機器,因此如果用戶想要銷燬他/她的虛擬機,那就是他/她的問題 - 只需要請求一個「新虛擬機機器「,然後才能繼續工作。