20. PHP 程式語言中有好幾個可以用來執行作業系統指令的危險函數,使用的時候必須非常謹慎,如果程式撰寫不當,有機會被攻擊者拿來利用,進一步取得網頁伺服器的控制權。請問下列哪一個語法不是用來執行作業系統指令的 PHP 函數?
(A) system
(B) passthru
(C) eval
(D) popen

答案:登入後查看
統計: A(152), B(80), C(436), D(112), E(0) #3351122

詳解 (共 2 筆)

#6413794
    eval不是用來執行作業系統...
(共 55 字,隱藏中)
前往觀看
14
0
#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