Улучшения безопасности структуры API PHP — что я могу сделать?

Я переписываю свой 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, Что является серьезной проблемой безопасности.

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

0

Решение

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector