Читаем Защита веб-приложений полностью

Вроде красиво, вроде безопасно… но так неудобно отлаживать – приходится все время читать хвост error_log. Есть способы выводить многие ошибки в браузер. Почему не все? Дело в том, что ошибка может возникнуть ещё до выполнению приведенных ниже трюков, и они просто не успеют отработать.

Итак, направить ошибки в браузер в режиме отладки можно либо по-старому:

либо с использованием более легкого, чем CGI.pm модуля Котерова:

27.

Необходимо четко следить, чтобы доступ к базе производился только приложением со всеми должными проверками и фильтрациями. Надо отфаерволлить базу от любых подключений, кроме локального (если база и приложение на одном сервере), либо кроме локального и только того, на котором находится приложение. Это избавит вас от необходимости проверять данные при чтении из базы (потому что они попали в нее гарантированно только от вашего приложения и проверены/профильтрованы им), кроме того, эффективнее проверять один раз при добавлении/изменении, а не каждый раз при чтении.

28.

Доступ к приложению всем либо конкретным пользователям можно дать только с определённых IP или подсетей.

29.

Можно устроить блокировку доступа к веб-приложению по выходным, в отпуске либо по определённым дням, в течении которых доступ к приложению совершенно точно никому не нужен. Если приложение полностью не доступно, то и сломать его не получится. Это лучше, чем оно могло бы быть поломано всегда. Правило применимо только к специфическим приложениям, которые крутятся, скажем, на предприятиях, работающих с понедельника по пятницу, а в выходные не работающих. Причём для исключения человеческого фактора (типа, забыли погасить сервер) можно назначить в кроне задание выключиться в пятницу вечером, а в BIOS Setup – включиться в понедельник утром. Ведь ни для кого не секрет, что лучше всего сервер защищён только выключенным состоянием :) Естественно, идея выключенного сервера годна лишь для такого сервера, где кроме защищаемого веб-приложения ничего не крутится (в первую очередь в голову приходит пример с официальным сайтом, который должен работать круглосуточно. Если у вас именно так, то укладывать веб-приложение вместе с сайтом нельзя и надо решать иначе, например временным пятничным выпиливанием VirtualHost приложения из конфига apache и его же понедельничным возвращением назад).

30.

Кривые скрипты по соседству могут свести на нет все ваши старания. Например, форум стороннего производителя. Скажем, в нём нашли уязвимости, а вы обратили внимание о новости слишком поздно – это угроза. Либо галерея картинок, писаная начинающими ради уникальных фич, но без полноценного учёта безопасности – тоже яркий пример. Если ваш проект настолько крут и важен, что вы боитесь за него из-за соседей на shared-хостинге, просто возьмите себе VPS или даже DS. Тогда вас будет труднее положить, у вас будет больше производительности и не будет таких соседей, которых стоит бояться на shared-хостинге.

31.

К младшему брату, языку PHP, существует интересный патч под названием suhosin http://www.hardened-php.net/suhosin/. Он добавляет к языку довольно мощные инструменты защиты скриптов. Прочитайте список возможностей http://www.hardened-php.net/suhosin/a_feature_list.html. Это превосходный источник идей, которые вы можете реализовать на Perl для защиты собственных проектов.

32. NULL-байт.

Существует опасность при появлении NULL-байта в строке, полученной от пользователя. Это символ, числовой код которого равен нулю. Сразу же приведу пример, где это очень наглядно видно:

Когда пользователь передал в программу на Perl строку, в середине которой имеется нулевой байт, вся строка попадает в переменную как есть. То есть всё, что идёт до нулевого байта, сам нулевой байт и всё, что после, будет сохранено в строке. Как только вы попытаетесь открыть файл с именем, хранящемся в такой переменной, нулевой байт будет означать конец строки, потому что Perl написан на языке C, а для языка C нулевой байт – это как раз символ окончания строки. Поэтому имя открываемого файла в конечном счёте будет воспринято внутренней сишной природой перла как строка до нулевого байта, остаток байт в перловой строке будет проигнорирован.

Представьте себе, что вы написали защиту, которая опирается на проверку строки от пользователя с помощью регулярного выражения. Вы хотите, чтобы это был исключительно текстовый файл. Вы сравниваете строку с выражением /\.txt$/ и считаете, что на этом задача решена. Однако пользователь может передать вам строку ”config.pl\x00.txt“. Такая строка пройдёт проверку, ведь у неё в конце по версии перлового представления строк есть фрагмент .txt, а какой файл откроется на самом деле, вы уже догадались? :)

Перейти на страницу:

Похожие книги

Веб-аналитика: анализ информации о посетителях веб-сайтов
Веб-аналитика: анализ информации о посетителях веб-сайтов

Компании в веб-пространстве тратят колоссальные средства на веб-аналитику и оптимизацию своих веб-сайтов, которые, в свою очередь, приносят миллиарды долларов дохода. Если вы аналитик или работаете с веб-данными, то эта книга ознакомит вас с новейшими точками зрения на веб-аналитику и то, как с ее помощью сделать вашу компанию весьма успешной в веб. Вы изучите инструментальные средства и показатели, которые можно использовать, но что важнее всего, эта книга ознакомит вас с новыми многочисленными точками зрения на веб-аналитику. Книга содержит много советов, приемов, идей и рекомендаций, которые вы можете взять на вооружение. Изучение веб-аналитики по этой уникальной книге позволит познакомиться с проблемами и возможностями ее современной концепции. Написанная практиком, книга охватывает определения и теории, проливающие свет на сложившееся мнение об этой области, а также предоставляет поэтапное руководство по реализации успешной стратегии веб-аналитики.Эксперт в данной области Авинаш Кошик в присущем ему блестящем стиле разоблачает укоренившиеся мифы и ведет по пути к получению действенного понимания аналитики. Узнайте, как отойти от анализа посещаемости сайта, почему основное внимание следует уделять качественным данным, каковы методы обретения лучшего понимания, которое поможет выработать мировоззрение, ориентированное на мнение клиента, без необходимости жертвовать интересами компании.- Изучите все преимущества и недостатки методов сбора данных.- Выясните, как перестать подсчитывать количество просмотренных страниц, получить лучшее представление о своих клиентах.- Научитесь определять ценность показателей при помощи тройной проверки "Ну и что".- Оптимизируйте организационную структуру и выберите правильный инструмент аналитики.- Изучите и примените передовые аналитические концепции, включая анализ SEM/PPC, сегментацию, показатели переходов и др.- Используйте решения с быстрым началом для блогов и электронной торговли, а также веб-сайтов мелкого бизнеса.- Изучите ключевые компоненты платформы экспериментирования и проверки.- Используйте анализ конкурентной разведки для обретения понимания и принятия мер.Здесь также находятся:- Десять шагов по улучшению веб-аналитики.- Семь шагов по созданию управляемой данными культуры в организации.- Шесть способов замера успеха блога.- Три секрета создания эффективной веб-аналитики.- Десять признаков великого веб-аналитика.

Авинаш Кошик

ОС и Сети, интернет