На платформе Linux, у меня есть C++ код, который идет как это:C++: Как избежать ввода пользователем для безопасных системных вызовов?
// ...
std::string myDir;
myDir = argv[1]; // myDir is initialized using user input from the command line.
std::string command;
command = "mkdir " + myDir;
if (system(command.c_str()) != 0) {
return 1;
}
// continue....
- Проходит вход пользователя в систему() называют безопасным на всех?
- Следует ли избегать/дезинформировать пользователя?
- Как?
- Как этот код может быть использован для вредоносных целей?
Спасибо.
Обратите внимание, что 'execl' НЕ возвращает, если ошибка не возникает (в отличие от' system'). Сначала вам придется «форк», подождите в родительском процессе, чтобы ребенок завершил и в конечном итоге проверил возвращаемое значение 'execl' из родительского процесса. –
Спасибо. если я использую mkdir (myDir, someMode), myDir не нужно дезинфицировать и избегать? Безопасно ли все, что вводит пользователь? – augustin
Да, функция 'mkdir' C просто принимает имя каталога. Независимо от этого, он попытается создать единый каталог. –