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