Лекция: Помимо этого постарайтесь гарантировать соответствие ввода предусмотренному шаблону. Скажем, для того
же почтового адреса этим шаблоном может быть name@domain I .domam2, что чаще всего делается на Peri
следующим образом: die «Wrong address» if ($address i'/"\w[\w\-. ]*\@[\w\-. ]+$/),
Здесь в начале и в конце строки ожидается один или несколько символов <а> — <z>, <А> — <Z>, <О> — <9>, <->,
<.> и <@> внутри, причем <-> или <.> не могут быть первыми. Правда, это не слишком помогает против атак,
подобных приведенной выше, достаточно завершить наш нсев-доадрес чем-нибудь типа ^somewhere, ru.
Если же у вас нет желания фильтровать спецсимволы, можно использовать другой вариант вызова функций
System и ехес, позволяющий передать нс один аргумент, а список аргументов. В этом случае Peri не передает
Список аргументов в оболочку, а рассматривает первый ар1умент как подлежащую выполнению команду и
Остальные аргументы — как параметры этой команды. Причем обычная для оболочки интерпретация спецсимво-
лов не производится:
вместо system «grep $pattern $files»: использовать system «grep», "$pattern", "$f lies":.
Этим же свойством можно воспользоваться для безопасного перенаправленного ввода/вывода. При этом нам
понадобится знание того факта, что при открытии с перенаправлением вывода команды <-> мы неявно вызываем