Zakładając skrypt Perla, który pozwala użytkownikom na określenie kilku wyrażeń filtru tekstowego w pliku konfiguracyjnym, czy istnieje bezpieczny sposób na umożliwienie im wprowadzania wyrażeń regularnych, bez możliwości niezamierzonych efektów ubocznych lub wykonania kodu? Bez faktycznego analizowania wyrażeń regularnych i sprawdzania ich pod kątem konstruktów problematycznych, to znaczy. Nie będzie żadnego zastąpienia, tylko dopasowanie.Czy można bezpiecznie czytać wyrażenia regularne z pliku?
Na marginesie, czy istnieje sposób sprawdzenia, czy określone wyrażenie regularne jest poprawne przed faktycznym użyciem go? Chcę wprowadzić ostrzeżenia, jeśli wprowadzono coś takiego jak /foo (bar/
.
Dzięki, Z.
EDIT:
Dzięki za bardzo ciekawe odpowiedzi. Mam ponieważ okazało się, że następujące niebezpieczne konstrukcje będą oceniane tylko w regexes jeśli używana jest
use re 'eval'
Pragma:
(?{code})
(??{code})
${code}
@{code}
Domyślnie jest no re 'eval'
; więc chyba że czegoś mi brakuje, powinno być bezpiecznie czytać wyrażenia regularne z pliku, a jedynym sprawdzianem jest eval/catch wysłany przez Axemana. Przynajmniej nie udało mi się ukryć niczego złego w moich testach.
Jeszcze raz dziękuję. Z.
Po prostu przeczytałem, że uważam, że dobrym stylem jest nie edytowanie własnego pytania w celu udzielenia odpowiedzi, ale zamiast tego opublikuj nową odpowiedź. Przepraszam za faux-pas, wciąż jestem tutaj bardzo nowy. Ale się uczę :-) – Zilk