20. PHP 程式語言中有好幾個可以用來執行作業系統指令的危險函數,使用的時候必須非常謹慎,如果程式撰寫不當,有機會被攻擊者拿來利用,進一步取得網頁伺服器的控制權。請問下列哪一個語法不是用來執行作業系統指令的 PHP 函數?
(A) system
(B) passthru
(C) eval
(D) popen
答案:登入後查看
統計: A(152), B(80), C(436), D(112), E(0) #3351122
統計: A(152), B(80), C(436), D(112), E(0) #3351122
詳解 (共 2 筆)
#6579931
這題考的是 PHP 中與系統指令執行有關的函數辨識。題目要我們選出不是用來執行作業系統指令的函數。
各選項功能分析:
(A) system()
-
✅ 功能:直接執行外部程式(即作業系統指令),並輸出結果。
-
✅ 屬於危險函數,容易被注入指令。
-
✅ 用途示例:system("ls -l");
(B) passthru()
-
✅ 功能:類似 system(),執行系統指令,但專門用來處理二進位格式的輸出(如影像)。
-
✅ 也可以造成安全問題。
-
✅ 用途示例:passthru("cat somefile.jpg");
(C) eval()
-
❌ 功能:執行一段 PHP 程式碼字串,不是系統指令。
-
✅ 雖然也危險(容易造成 RCE),但不是用來執行作業系統指令。
-
✅ 用途示例:eval('$a = 5 * 2;');
(D) popen()
-
✅ 功能:開啟一個管道來執行系統指令,並可讀取或寫入該指令的輸出或輸入。
-
✅ 屬於可以執行系統指令的函數。
-
✅ 用途示例:$handle = popen("ls -l", "r");
正確答案:
(C) eval
✅ 它是執行 PHP 內部的程式碼,而不是用來執行作業系統指令。雖然同樣危險,但題目明確問的是「執行作業系統指令的函數」,所以這是正確選項。
1
0