Вопросам безопасности придается большое значение как в программировании CGI , так и при решении других задач, связанных с программным обеспечением для сетей. Часто бывает необходимо защитить файлы и другие ресурсы системы от угрозы со стороны пользователей, которая может проистекать от их неаккуратности или даже злого умысла. Это особенно важно для Web-серверов, а также других серверов, таких как FTP-сервер, которые подключены к Internet , где наличие злоумышленных пользователей хорошо известно. Одним из путей защиты системы от атак таких злоумышленников служит создание шлюзов безопасности, через которые пропускаются входные данные. В этом случае только данные, оцененные шлюзовой программой как безопасные, передаются в систему.
Традиционно большая часть серверов Internet исполняется под системой UNIX и написана на языке С. Неверное использование программистами указателей на языке С ведет к нарушению безопасности работы системы.
Одним из достоинств Perl , существенным при написании надежных шлюзовых программ, служит тот факт, что переменные строкового типа изменяют свою длину автоматически в зависимости от потребности. Строковые переменные содержат столько символов, сколько им присваивает скрипт. Perl не позволяет программе писать данные в одну переменную таким образом, чтобы нарушить целостность данных другой переменной.
Имеется также специальная версия языка Perl , которую называют taintperl , в которой осуществляется проверка зависимостей между данными и предотвращается выполнение системой команд по передаче данных серверу от источника, не заслуживающего доверия. Если испорченные или некорректные данные поступают на вход программы taintperl , то она помечает все значения командной строки, переменных окружения и входные данные как испорченные, предотвращая их дальнейшую передачу серверу и возникновение фатальной ошибки.