Я читал, что команда open() с двумя аргументами уязвима для инъекций, тогда как команда open() с 3 аргументами не может быть впрысками.perl open() предотвращение впрыска
, у меня есть каталог, в котором все мои файлы имеют общий префикс, то есть «File-» так пример файла будет, файл-SomeSourceCode.txt
Как бы что-то вроде open(FILEHANDLE, "some/random/dir/file-" . $fileextension)
уязвимы?
, где $fileextension
может быть любым видом «имени файла» для каждого. Насколько я понимаю, это не будет уязвимым для имени файла, такого как | shutdown -r |
, который будет выполнять команду на сервере.
Это может быть не очень уязвимым, если аргумент имени файла начинается с строки литерала (хотя я бы не поставил большие суммы на него). Реальная уязвимость - это когда аргумент является именем переменной, возможно, полученным без проверки из аргумента командной строки. В любом случае нет веской причины не использовать 3-аргументную версию 'open'. Вы обеспокоены безопасностью какого-либо старого кода, который вы не можете обновить? –
Это вопрос опасности и накладных расходов. Существует опасность. Эта опасность полностью устраняется тремя аргументами 'open'. Зачем пытаться смягчить этот риск, когда вам не нужно принимать его в первую очередь. – Sobrique
В главе «Технологии безопасного программирования», посвященной освоению Perl, рассказывается о таких вещах. –