Мое приложение (на основе Perl) должно позволять пользователям вводить регулярные выражения для сопоставления различных строк за кулисами. Мой план до сих пор заключался в том, чтобы взять строку и обернуть ее во что-то вроде
$regex = eval { qr/$text/ };
if (my $error = $@) {
# mangle $error to extract user-facing message
($text
заблаговременно исключен из новой строки, поскольку на самом деле это несколько регулярных выражений в многострочном текстовом поле, которое я split
).
Есть ли потенциальные угрозы безопасности при выполнении этого - какой-то странный ввод, который может привести к выполнению произвольного кода? (Помимо уязвимостей переполнения буфера в механизмах регулярных выражений, таких как CVE-2007-5116). Если да, есть ли способы их смягчения?
Есть ли лучший способ сделать это? Любые модули Perl, которые помогают абстрагировать операции преобразования пользовательского ввода в регулярные выражения (например, извлечение сообщений об ошибках ... или предоставление модификаторов, таких как /i
, которые мне здесь не нужны, но было бы неплохо)? Я искал CPAN и не нашел много обещающего, но развлекаюсь тем, что что-то упустил.