Как очистить ввод от открытых файлов в Perl - PullRequest
3 голосов
/ 31 января 2020

У меня есть сценарий Perl, который открывает файл, обрабатывает его и выводит некоторые данные. Входной файл распакован.

путь к $file передается сценарию в качестве дополнения.

Ниже приведено текущее решение, которое я использую:

open(my $fh, "-|", "$gzcat $file") or die("Cannot open $file$!");

Сценарий недавно завершился неудачей в проверке безопасности Checkmarx со следующей ошибкой:

<script> gets user input for the $fh element. This element’s value then flows through the code without being properly sanitized or validated and is eventually displayed to the user in method <method>. This may enable a CrossSite-Scripting attack.

Я попытался проверить, существует ли файл с perl -f, а также удалить нежелательные символы, использующие $file =~ s/[^A-Za-z0-9_\-\.\/]//g;, но они не удовлетворяют Checkmarx.

Я хотел бы знать, каков правильный способ очистки ввода, который содержит путь к файлу в Perl.

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Я закончил тем, что удалил ненужные символы с помощью

$file =~ s/[^A-Za-z0-9_\-\.\/]//g;

. Проверка того, что файл существует с Perl -f, и открытие файла с помощью IO::Uncompress::Gunzip.

Это проходит проверку Checkmarx.

1 голос
/ 31 января 2020

Пока вы используете Perl 5.8 или новее в ОС, которая поддерживает разветвление, или 5.22 или новее в Windows, вы можете использовать форму списка открытых каналов, чтобы обойти оболочку при запуске вашей команды. Это позволяет избежать проблем, когда имя файла содержит метасимволы, которые интерпретирует оболочка, например & и пробелы.

open(my $fh, "-|", $gzcat, $file) or die("Cannot open $file: $!");

Однако это не проверка или очистка в соответствии с запросом, но важно избегать как уязвимостей, так и плохое поведение. Упомянутая возможность межсайтового скриптинга будет вызвана тем, что имя файла будет отображаться, как указано ниже; например, если она отображается на странице HTML, вы должны HTML - оставить ее, большинство систем шаблонов имеют методы для этого.

...