В идеале, есть список известных допустимых значений, и вы проверяете это.
В любом случае вы хотите избежать оболочки, используя форму с несколькими аргументами system
или с помощью IPC :: System :: Simple systemx
.
Если вы не можете избежать оболочки, вы должны правильно преобразовать текст для передачи в команду влитералы оболочки.
Даже в этом случае вы должны быть осторожны со значениями, которые начинаются с -
.Многие инструменты принимают --
для обозначения конечных опций, что позволяет безопасно передавать другие значения.
Наконец, вы можете убедиться, что аргументы не содержат символ NUL
(\0
).
systemx('tool', '--', @args)
Примечание. Передача произвольных строк невозможна в Windows.Требуется дополнительная проверка.