Как правильно выбирать CGI скрипты


Прислал: Green Kakadu [ 25.01.2002 @ 14:52 ]
Раздел:: [ Статьи по Perl ]


Многие ищут скрипт по критерию возможностей: мол делает что мне надо, значит рулезный скрипт, и вовсе не задумываются о его реализации. На сайте //perl.com/ появилась статья: Finding CGI Scripts
О том где найти скрипты, и как выбрать наилучший. Вот некоторые рекомендации по выбору скрипта:

- используется ли в скрипте ключ -w и прагма strict?
Если да, то хорошо, значит как минимум, программер знал о существовании таковых и смог написать "корректный код", т.к. ключ -w и пагма strict заставляют интерпритатор Perl быть более настороженным к коду

- используется ли контроль меченных данных?
Ключ -T. Данный режим прежде всего полезен форумам, гостевым книгам, доскам объявлений, т.е. тем, где могут запостить всякую гадость, которую скрипт тупого (ладно, не тупого, а недальновидного) программера может применить для каких нибудь критичных функций (верх идиотизма - разборка таких подозрительных данных функцией eval ) В общем, повышаем надежность (даешь security!). Такие сомнительные данные (т.е. переданные скрипту посетителями через форму) всегда надо проверять.

- Использует ли скрипт CGI.pm
Это стандартный модуль Perl, который можно найти везде, где есть сам Перл, но некоторые умники предпочитают обрабатывать самостоятельно передаваемые данные... что чревато ошибками и защищенностью скрипта. Кто-то скажет, что мол зачем грузить целый модуль, для обработки затхленькой формочки? Ну так не грузите его весь! Загрузите те функции, что вы используете. О, еще иаленькие рекомендации. У этого модуля есть часть опций, которые вы можете включить, отключить (в целях безопасности), например:

  • $POST_MAX=-1; если выставите положительное число, то это будет кол-во бит, которые можно передать скрипту через форму. Когда-то, у модуля CGI.pm был глючок, связанный с тем, что некоторые редиски заливали кучу информации-мусора через формы, что приводило к печальным последствиям. Если хотите поставить ограничения на объем передаваемой, то в своем скрипте напишите, нечто вроде: $CGI::POST_MAX=1024*100; (т.е. 100кб)
  • $CGI::DISABLE_UPLOADS = 0; Если включить (т.е. поставить в True), то аплоад будет запрещен
  • ... Читайте документацию, я и так отвлекся
    Рекомендую скачать документацию этого модуля (на русском в PDF): //perldoc.narod.ru ( http://webscript.ru///perldoc.narod.ru )

    - Как часто скрипт обновляется?
    Если часто, значит его автор заботится, следит за своим творением и пытается его сделать лучше или хотя бы конкурентоспособным, с другой стороны, если обновления связаны в основном с исправлением ошибок, то стоит призадуматься..

    - Тех. поддержка... она есть вообще?
    Очень яркий показатель. Если есть, то имеет смысл ознакомиться с проблемами, которые одолевают пользователей скрипта. А если нет, то это вовсе не значит, что ни у кого нет проблем - скорее всего человек что-то сделал и забыл/забил.

    С учетом всего сказанного, хороший CGI скрипт должен как минимум выглядеть так:

    #!/usr/bin/perl -Tw
    use strict;
    use CGI qw/:cgi/;
    use vars '$global_var';

    Напоследок

    Все вышеизложенное я написал для проекта WebScript.Ru Nавигатор ( http://webscript.ru///forums.webscript.ru/showthread.php?s=&threadid=3564 ) поэтому маленькое пожелание: свои комментариии пишите ТАМ! К тому же, там уже идет обсуждение этой заметки.