Подкаст: Защита веб-приложений на 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
Мне говорят «Часто выключать сервер плохо. В основном, отказы электроники происходят в момент выключения».
Отвечаю. Выход есть: опускать/поднимать сетевые интерфейсы в cron-е. Не будет регулярного стресса для техники, а цель будет достигнута. Если требуется админить, пока с сервером не работают юзеры, опускаем только интерфейс, который торчит наружу, а внутренний оставляем для себя.
Или аналогично, в cron-е, фаерволим на время http от мира.
Добавить комментарий: