Улучшения безопасности структуры API PHP - что я могу сделать? - PullRequest
0 голосов
/ 29 мая 2018

Я переписываю свой API для своего приложения на PHP и использую структуру запроса

http://example.com/controller/function

, и мой API разбивает request_uri на:

array(
        0 => "controller",
        1 => "function"
    );

и выполняет запрошенныйработать через следующий код.

//Build the file name
$fileName = ('../controllers/' . $endpoint[0] . '.php');

//Look for the file that is being requested
if(!file_exists($fileName)){
    echo json_encode( StatusCodes["no_endpoint"] );
    die();
} else {
    include_once($fileName);
}

//Does the function exist?
if(!function_exists($endpoint[1])){
    echo json_encode( StatusCodes["no_function"] );
    die();
}

//Import the API settings to get all the keys necessary
include_once('../includes/ApiSettings.php');

//Include the common functions. Done here so the user can't bypass function_exists checks
include_once('../includes/CommonFunctions.php');

//Finally, execute the requested function
echo json_encode($endpoint[1]());

, как мне сказал один из моих коллег, выполнение с помощью echo json_encode($endpoint[1]()); может привести к тому, что люди выйдут из каталога webroot или, например, отобразят системную информацию обратно., если они достигли конечной точки http://example.com/controller/phpinfo.Что является серьезной проблемой безопасности.

Какой метод я должен использовать вместо этого или как я могу помешать людям выполнять удаленное выполнение кода и вызывать всевозможные проблемы.

1 Ответ

0 голосов
/ 29 мая 2018

Создайте массив функций, которые приемлемо вызывать, и используйте его в качестве белого списка.Проверьте это, а не все существующие функции.

...