簡體   English   中英

限制在命令行上執行的php函數

[英]Restricting php functions executed on the command line

現在通常,出於顯而易見的原因,我通常永遠不會在應用程序中允許此類操作,但是對於我正在編寫的該應用程序,我希望能夠在命令行上執行用戶添加的php。 但是,我想限制/刪除某些功能,例如文件系統功能,數據庫功能, shell_exec等。我將運行PHP> 5.4,並且如果有幫助,可以使用自定義php.ini

我基本上需要消除用戶對其代碼進行有害操作的可能性。

我可以控制哪個用戶運行php腳本,因此可以使用user:group組合來限制對某些文件的訪問。

在執行之前可以很好地對其代碼進行正則表達式,然后完全拒絕它。

誰能建議這樣做的選擇?

您可以使用PHP的內置Tokenizer來解析用戶的PHP腳本並檢查不允許的方法調用。

一個簡短的示例腳本將使您了解我在說什么:

$str = "<?php

\$fp = fopen('test.txt', 'wb');

call_user_func_array('fopen', array('test.txt', 'wb'));

\$file = new File;

\$fn = 'my' . 'sql_connect';
\$fn();

echo 'hello world';";

$tokenizedPhp = token_get_all($str);

$i = -1;
foreach($tokenizedPhp as $token) {
    ++$i;

    if(is_array($token) === false) {
        echo $i , ': punctuation -> ' , $token , PHP_EOL;
        continue;
    }

    echo $i , ': ' , token_name($token[0]) , ' -> ' , $token[1] , PHP_EOL;

    if($token[0] === T_STRING && function_exists($token[1]))
        echo '<b>function call/class instanciation: ' , $token[1] , '</b>' , PHP_EOL;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM