div.main {margin-left: 20pt; margin-right: 20pt}
Как правильно выбирать CGI скрипты
Многие ищут скрипт по критерию возможностей: мол делает что мне надо,
значит рулезный скрипт, и вовсе не задумываются о его
реализации. На сайте http://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): http://perldoc.narod.ru
- Как часто скрипт обновляется?
Если часто, значит его автор заботится, следит за своим
творением и пытается его сделать лучше или хотя бы
конкурентоспособным, с другой стороны, если обновления связаны в основном с исправлением ошибок, то стоит призадуматься..
- Тех. поддержка... она есть
вообще? Очень яркий показатель. Если есть, то имеет смысл
ознакомиться с проблемами, которые одолевают пользователей
скрипта. А если нет, то это вовсе не значит, что ни у кого нет проблем - скорее всего человек что-то сделал и забыл/забил.
С учетом всего сказанного, хороший CGI скрипт должен как минимум
выглядеть так:
#!/usr/bin/perl -Tw
use strict;
use CGI qw/:cgi/;
use vars '$global_var';
Автор: © Green Kakadu Источник:
http://www.webscript.ru/
|