Андрей
Строганов
aka DJ-Andrey-sXe

Подкаст: Защита веб-приложений на Perl

Толстый намёк на качественный звук Это аудиоверсия одноимённой статьи. Вошло всё кроме исходников :) Рассказываю о знакомых мне способах защищать веб-приложения (иначе говоря, сервисы, системы управления содержимым, суть одна: скрипты на языке Perl) от взлома, злоупотребления и несанкционированного использования. Рассчитано на тех, кто уже программирует и занимается проектом, который предстоит выкатить в беспощадный Интернет. Ещё аудиоверсия идеальна для тех, кому просто интересно, как защищают сайты, но всё время лень было напрягаться читать.

Предлагаю применять её так: слушаете, и всякий раз, когда данное правило справедливо для вашего проекта, ставите на паузу и прикидываете, всё ли у вас в порядке по данному пункту. Если нет или вы не уверены, под конец у вас наберётся пачка пунктов, что проверить и, возможно, поправить, чтобы не осталось ни малейшей лазейки.

Несмотря на название, и на изначальную направленность на Perl и Apache, многие пункты (особенно из второй части) не имеют никакого отношения напрямую к конкретному языку, веб-серверу или платформе, а являются общими правилами.

Что внутри

  • Часть 1.
    Пункты 1—18: Настоятельно рекомендуется для всех новичков. Опытным разработчикам, у которых за плечами мегабайты кода, эти пункты, скорее всего, нового не поведают. Зато начинающим, которые хотят приблизиться к профессионалам, такое надо знать наизусть. Правила справедливы почти для всего.
    Темы: HTML, JavaScript, методы HTTP, параметры запроса и Cookie, способы фильтрации, уникальность данных, примеры, названия инструментов, защита при обращении к базе данных, XSS, сокрытие провоцирующей к влому информации, кому доверять, логирование, какие дыры опаснее всех, главный закон подлости № 18 и чем оборачивается откладывание на «потом».
  • Часть 2.
    Пункты 19—40: рекомендации средней и хардкорной тяжести. Хоть большая часть и справедлива для любых немаленьких проектов, тут встречаются пункты только для системных администраторов, только для высоконагруженных проектов или просто для полных параноиков или проектов с высокой ответственностью за данные.
    Темы: загрузка файлов на сервер; ускоряем Perl, но помним о подводных камнях; как поступать с чужими роботами; заткните рот apache; mod_security; меры против подбора пароля; сеансы и таймауты; отладка; организация доступа к БД; ограничение по IP, по времени; об обтключении приложения или сервера: когда и как; вы уверены в соседях?, VDS/VPS/DS; возьми лучшее у младшего брата; NULL-байт; ключи запуска: -T, -w, -W, -X; use strict по полочкам: vars, subs и refs; бэкапы; автор — не идеальный тестировщик; уведомление о взломе; perltidy; административные службы, стандартны, привычки или как перестать быть мишенью.

Если хотите перескочить первую часть, мотайте сразу на 18 минут 45 секунд :)

Благодарности

  • Умпутуну, Бобуку и прочим хорошо звучащим образцам, поставившим высокую планку качества звука, к которой я стремился.
  • Всем, кто помогал улучшать текст и тестировал звучание подкаста на разной технике.
  • Evave, Harisma, Spirit Tag за podsafe-треки.

Скачать подкаст

Один комментарий | RSS

18.06.2011 в 22:10 #
Автор: DJ-Andrey-sXe

Мне говорят «Часто выключать сервер плохо. В основном, отказы электроники происходят в момент выключения».

Отвечаю. Выход есть: опускать/поднимать сетевые интерфейсы в cron-е. Не будет регулярного стресса для техники, а цель будет достигнута. Если требуется админить, пока с сервером не работают юзеры, опускаем только интерфейс, который торчит наружу, а внутренний оставляем для себя.

Или аналогично, в cron-е, фаерволим на время http от мира.

Добавить комментарий: