HTML, Excel, Word, SEOPHP курс для чайников ⇒ Безопасность

PHP для "чайников"

Инструменты
Выбираем IDE
Выбираем Web-сервер
Выбираем СУБД
Структура языка PHP
Первый шаг
Синтаксис
Типы данных
Переменные и константы
Операторы
Выражения
Управляющие структуры
Функции
Классы
Исключения
Ошибки
Массивы
Глобальные массивы
Cookies
Сессии
Загрузка файлов
Работа с файлами
Работа с файлами на диске
Работа с данными в файле
Пример управления файлами
Работа с базами данных
Подключение
Анализ результатов
Выполнение запросов
Отключение
Пример: отслеживание пользователей
Работа в сети
Отправка почты
Безопасность
HTTP-аутентификация
Защита логином и паролем
Автоматизация
Регулярные выражения в PHP
Интеграция
PHP и JavaScript



Безопасность


Автор: Артемьев Сергей Игоревич
ICQ: 438856621
email: _spin_@bk.ru

Безопасность - один из ключевых моментов, на которые должен в первую очередь обращать внимание любой разработчик. Взлом сайтов - это абсолютно незаконное, но иногда очень прибыльное занятие, а лёгкие деньги привлекают как начинающих, так и опытных "специалистов".


Защиту сайта необходимо вести в двух направлениях: защита кода и защита данных.


Защита кода


Существует множество вариантов атак на сайты, но львиная доля взломов происходит из-за халатности администраторов и программистов. В образовательных целях рекомендую сходить на популярный сайт "Хакер.ру" и посмотреть несколько видеороликов о взломе.

Все наиболее популярные атаки можно разделить на три группы: атаки на сервер, атаки на интерпретатор и атаки на скрипт.

При атаках на сервер злоумышленники используют уязвимости в серверных программах (например, уязвимости веб-сервера или почтовых служб). Единственное средство защиты от таких атак - качественная работа администраторв сервера, отслеживание ими новостей о новых уязвимостях и своевременное обновление программного обеспечения. Разработчик сайта своими силами защититься от таких атак не может, т.к. не имеет достаточных прав.

Второй тип - атаки на интерпретатор, а в нашем случае - на интерпретатор PHP. Не некрет, что в любой программе есть "дырки", которыми может поспользоваться злоумышленник. Смысл атаки в том, чтобы подать на вход интерпретатору такую последовательность команд, исполнив которую он ошибочно предоставит злоумышленнику доступ к каким-либо ресурсам сервера. Такая ситауция называется "повышение привилегий". Защита от таких атак - своевременное обновление администраторами версии PHP и установка пакетов исправлений. Со своей стороны разработчик должен отслеживать появляющиеся уязвимости в функциях и соответствующим образом изменять скрипты.

Защита от третьего вида атак полностью лежит на плечах программиста. Как уже говорилось, большая часть взломов происходит из-за ошибок или недоработок в коде. Чтобы избежать основных ошибок, следуйте следующим простым правилам:

1. Никогда не доверяйте чужим данным, даже если они получены из надёжного, но всё-таки стороннего источника (например, с сайта партнёра или от зарегистрированного пользователя). Все данные должны быть в обязательном порядке перед использованием проверены на корректность.

2. Пользуйтесь готовыми библиотеками доступа к базам данных. Такие библиотеки обычно хорошо проверены на безопасность и постоянно совершенствуются хорошими специалистами. Вам достаточно лишь следить за обновлениями и поддерживать свои версии библиотек в актуальном состоянии.

3. Не доверяйте пользователям даже в мелочах. Исходите из постулата, что если есть возможность навредить, то найдётся человек, который навредит.

4. Старайтесь самостоятельно обрабатывать ошибки и никогда не показывайте подробности ошибок пользователям. Знание путей к файлам, имён библиотек, названий баз данных и таблиц сильно упростит задачу хакера.

5. Всегда старайтесь очищать используемые переменные. Одна не очищенная вовремя переменная может перечеркнуть все ваши усилия по защите. Это относится и к переменным классов. Если переменная используется только в одной функции - не надо делать её глобальной или представлять как отдельное свойство.

6. Старайтесь не хранить приватные данные на сервере, а если хранить всё-таки приходится - делайте это в базе данных в зашифрованном виде. Это сильно усложнит работу хакера, даже если он уже забрался на ваш сайт.

Специалисты хорошо знают аксиому: "если один человек смог создать защиту - найдется человек, который её взломает". Очевидно, что идеально защищённых скриптов и серверов не существует и работы по повышению безопасности должны вестить постоянно (по мере обнаружения новых дыр и багов).

Защита данных

Необходимость хранения приватных данных на сайте (например, базы клиентов), вынуждает разработчиков встраивать в сайт специальные системы защиты. Чаще всего используются два варианта: HTTP-аутентификация или парольная защита.

HTTP-аутентификация более надёжна, но менее удобна в администрировании. Кроме того, пользователь обычно не может самостоятельно зарегистрироваться - его должен зарегистрировать один из администраторов или модераторов сайта.

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

На сайтах зачастую используются оба метода одновременно: парольную защиту устанавливают для обычных пользователей и HTTP-аутентификацию для входа в раздел администраторов.

Последовательность организации каждого из указанных методов мы рассмотрим в соответствующих уроках этого раздела.

 



В начало страницы



В начало страницы