MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Безопасное программирование на Perl

Название:Безопасное программирование на Perl
Просмотров:62
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:Как избежать передачи пользовательских переменных оболочке ОС при вызове exec() и system().

Университетская электронная библиотека.
www.infoliolib.info

Часть полного текста документа:

Безопасное программирование на Perl
    Дмитрий Громов
    Как избежать передачи пользовательских переменных оболочке ОС при вызове exec() и system()?
    В Perl вы можете запускать внешние программы различными путями. Вы можете перехватывать вывод внешних программ, используя обратные кавычки:
    $date = `/bin/date`;
    Вы можете открывать "туннель" (pipe) к программе:
    open (SORT, " | /usr/bin/sort | /usr/bin/uniq");
    Вы можете запускать внешние программы и ждать окончания их выполнения через system():
    system "/usr/bin/sort < foo.in";
    или вы можете запускать внешние программы без возврата управления с помощью exec():
    exec "/usr/bin/sort < foo.in";
    Все эти выражения являются опасными если используют данные, введенные пользователем, которые могут содержать метасимволы. Для system() и exec() существует синтаксическая возможность, позволяющая запускать внешние программы напрямую, без обращения к оболочке ОС. Если вы передаете внешней программе аргументы, представляющие собой не строку, а список, то Perl не будет использовать оболочку, и метасимволы не вызовут нежелательных побочных эффектов. Например:
    system "/usr/bin/sort","foo.in";
    Вы можете использовать эту особенность для того, чтобы открыть туннель, не обращаясь к оболочке ОС. Вызывая open в магической последовательности символов |-, вы запускаете копию Perl и открываете туннель (pipe) к этой копии. Дочерняя копия Perl затем немедленно запускае внешнюю программу, используя список аргументов для exec().
    open (SORT,"|-") || exec "/usr/bin/sort",$uservariable;
    while $line (@lines) {
    print SORT $line,"\n";
    }
    close SORT;
    Для чтения из туннеля без обращения к оболочке можно использовать похожий способ, с последовательностью -|:
    open(GREP,"-|") || exec "/usr/bin/grep",$userpattern,$filename;
    while () {
    print "match: $_";
    }
    close GREP;
    Это те формы open(), которые необходимо всегда использовать в случаях, когда в другой ситуации вы использовали бы перенаправление open (piped open).
    Еще более хитрая возможность позволяет вам запускать внешние программы и обманывать их относительно их собственного названия. Это полезно при использовании программ, действия которых зависят от того, с использованием какого имени они запущены.
    Вот синтакс:
    system $настоящее_имя "ложное_имя","аргумент1","аргумент2"
    Например:
    $shell = "/bin/sh"
    system $shell "-sh","-norc"
    Этот пример запускает sh - оболочку операционной системы - с именем "-sh", заставляющим ее действовать интерактивно. Заметте, что настоящее имя программы должно храниться в виде переменной, и что между именем переменной и началом списка аргументов нет запятой.
    Можно записать эту команду более компактно:
    system { "/bin/sh" } "-sh","-norc"
    Что такое "проверки заразности" (taint checks) в Perl? Как их включить?
    Как мы видели, одна из наиболее часто встречающихся проблем с безопасностью при программировании CGI - передача оболочке ОС пользовательских переменных без их проверки. Perl предлагает механизм проверки "заразности", который не позволяет этого делать. Любая переменная, которая проинициирована данными за пределами программы (включая данные из среды, стандартного ввода и командной строки) рассматривается как "заразная", и не может быть более использована за пределами программы. ............






Похожие работы:

Название:Технические параметры выполнения произвольных программ высококвалифицированными батутистами
Просмотров:723
Описание: на различных соревнованиях Аспирантка, заслуженный мастер спорта С. В. Баландина Аспирантка, заслуженный мастер спорта И. В. Караваева Кубанский государственный университет физической культуры, спорта и туризма,

Название:На чем писать программы? (краткий обзор возможностей языков программирования)
Просмотров:741
Описание: Сергей Трофимов Сегодня мы продолжаем разговор на тему какой язык программирования выбрать, начатый с статье “Delphi или Visual C++ - вот в чем вопрос”. Тема оказалась глубже, чем казалось на первый взгляд, и я провел нек

Название:Когда прекращать тестирование программ?
Просмотров:685
Описание: С.Трофимов Никто не сомневается в необходимости тестирования программ. Будь то небольшой учебный пример или целая информационная система. Вопрос только в том, сколько нужно тестировать и когда можно считать про

Название:Разработка технологической программы выращивания цветочных культур (нарцисс и цикламен)
Просмотров:742
Описание: Содержание выращивание цветок агроэксплуатационная характеристика Введение 1. Производственно-экономическая характеристика хозяйства, природно-климатические особенности зоны 2. Агроэксплуатационная ха

Название:Оценка эффективности программно-целевого метода службы занятости населения
Просмотров:530
Описание: Министерство науки и образования РФ ГОУ ВПО «Магнитогорский государственный университет» Социальный факультет Кафедра теории и методики социальной работы Оценка эффективности программ

 
     

Вечно с вами © MaterStudiorum.ru