|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Andrey Sapozhnikov 2:5020/400 12 Jul 2002 13:23:22 To : Dmitry Koteroff Subject : Re: еще раз об экспорте [Was: Открытое письмо...] -------------------------------------------------------------------------------- Dmitry Koteroff wrote: > Здравствуйте, Andrey. > 11 июля 2002 года, четверг, 17:15. Вы написали: >>В случае же когда автор не объявляет переменные (и не пользует strict) - >>не работает Ваша защита данных при экспорте. >> > > Вот тут я все же не совсем понял, какие же проблемы могут быть в защите. Да, > в старой версии можно было переписать поверх любую переменную, но это был > ГЛЮК. Вариант наткнуться случайно на "хакерскую" переменную практически > отпадает, протому что вызывает "use of unitialized variable" на этапе > отладки со 100%-й вероятностью. Объясняю. Вот пример кода, когда человек пользуется явным описанием переменных: use strict; our @cmd; use CGI::WebIn (1); foreach (qw(/dir/a /dir/b /dir/c)) { push @cmd, $_; } system 'ls', '-l', @cmd; Пример, разумеется бессмысленный, но в усложненном варианте достаточно распространен. Смысл в том, что человек полагает (вполне справедливо), что на момент запуска скрипта массив @cmd пуст. Как я уже говорил, при use strict все равно придется перечислять явно все переменные которые ожидает скрипт. Hо вот тот же самый код без первых двух строк: use CGI::WebIn (1); foreach (qw(/dir/a /dir/b /dir/c)) { push @cmd, $_; } system 'ls', '-l', @cmd; содержит дыру. Поскольку @cmd уже может быть экспортирован из WebIn и заполнен (к примеру, содержать враждебную команду в обратных апострофах). > Я имел в виду, что устанавливать 1 модуль проще, чем устанавливать 2. Если модуль лежит на CPAN, то устанавливать 1 или 25 - без разницы. Руками их устанавливают либо по незнанию, либо от природного нигилизма. Для этой цели в поставке Perl имеется модуль CPAN.pm который автоматом достанет свежую версию и предложит удовлетворить зависимости данного модуля. Т.е. набрав: $ perl -MCPAN -e shell CPAN> install HTML::Mason ... нам и думать не надо, от каких модулей зависит HTML::Mason, и даже - какая версия сейчас актуальна. В ActiveState аналогом этого модуля является ppm. > Кстати, вопрос: заслуживают ли все эти изменения перехода к номеру версии > 2.0, или же достаточно будет 1.10 (против 1.03)? Интерфейс не меняется, > поэтому я склоняюсь (верно ли?) ко второму варианту. ну вот это последнее из того над чем стоит ломать голову. Андрей --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/5284059598f2.html, оценка из 5, голосов 10
|