Программирование arrow PHP arrow Правда о сессиях

Правда о сессиях

Оглавление

Почти каждое PHP-приложение использует сессии. Эта статья детально рассматривает реализацию безопасного механизма управления сессией на PHP. После базового введения в архитектуру, лежащую в основе web'а, после знакомства с проблемой сохранения состояния, с основным применением и смыслом кук, я покажу вам несколько простых и эффективных
методов, которые могут быть использованы для увеличения безопасности и надёжности PHP-приложений, нуждающихся в сохранении состояния.

Распространено неправильное представление, что PHP обеспечивает
определённый уровень безопасности с помощью собственных возможностей
управления сессией. PHP же, напротив, просто предоставляет удобный,
подходящий механизм, а обеспечение законченного решения является
заботой разработчика; и, как вы увидите, не существует единого метода
решения, наилучшего для всех.

Невозможность сохранения состояния

Протокол передачи гипертекста (HTTP), являющийся движущей силой web'а, — это протокол без сохранения состояния.
Связано это с тем, что в нём нет ничего, что требует от браузера
идентифицировать себя при каждом запросе, а также отсутствует постоянно
установленное соединение между браузером и web-сервером, которое сохранялось бы от страницы к странице. Когда пользователь посещает web-сайт, браузер посылает HTTP-запрос web-серверу,
который в свою очередь возвращает HTTP-ответ. Этим взаимодействие и
ограничивается, это и представляет собой завершённую HTTP-транзакцию.

Так как обмен информацией в web'е основан на HTTP, сохранение состояния в web-приложении
может быть для разработчиков очень сложной задачей. Куки — это
расширение протокола HTTP, которое было введено, чтобы помочь в
обеспечении сохраняющих состояние HTTP-транзакций, но забота о
конфиденциальности побуждает многих пользователей отключать поддержку
кук. Информация о состоянии может быть передана через URL, однако её
случайное раскрытие представляет собой серьёзную угрозу безопасности.
Фактически, сама суть сохранения состояния требует, чтобы клиент
идентифицировал себя, однако те из нас, кто задумывается о
безопасности, знают, что мы никогда не должны доверять информации,
посланной клиентом.

Несмотря на всё это, существуют изящные способы решения
проблемы сохранения состояния. Конечно, идеального решения не
существует, как и способа, который может удовлетворить нужды каждого.
Эта статья представляет некоторые способы, которые могут надёжно
обеспечить возможность сохранения состояния, а также защитить от
основанных на сессии атак, таких как ВСД {Б.С.: в оригинале — impersonation.}  — выдача себя за другого
(подделка сессии). Попутно вы изучите, как на самом деле работают куки,
что делают PHP сессии и что требуется для подделки сессии.


 
Следующая статья »


  • PHP, 21 ошибка программиста PHP. Часть 3
    Описания семи, последних, "смертельных" ошибок. Эти ошибки концептуальны по своей природе и являются причиной появления ошибок, описанных в 1-ой и 2-ой частях статьи. Они включают и такие ошибки, как недостаточное внимание, уделённое как проекту в целом, так и коду программы, в частности....
  • PHP, 21 ошибка программиста PHP. Часть 2
    Следующие 7 ошибок (#14-8) относятся к "серьёзным". Они ведут к ещё более значительному уменьшению скорости выполнения кода, уменьшению безопасности скриптов; код становится еще более запутанным.Одна из наиболее сильных сторон PHP является, одновременно, и его слабой стороной: PHP очень прост в изучении. Это привлекает многих людей; однако, несмотря на его кажущуюся простоту, не так-то просто научиться использовать этот язык правильно и эффективно....
  • PHP, 21 ошибка программиста PHP. Часть 1
    Описываются 7 "детских" ошибок (21-15 в обратном порядке, в соответствии со степенью серьезности по нашей классификации). Такие ошибки не вызывают серьезных проблем, но приводят к уменьшению эффективности работы программы, а также выражаются в громоздком трудночитаемом коде, в который, к тому же, трудно вносить изменения.Одна из наиболее сильных сторон PHP является, одновременно, и его слабой стороной: PHP очень прост в изучении. Это привлекает многих людей; однако, несмотря на его каж...
  • PHP, Переход к PHP5
    Краткий обзор возможностей PHP по материалам PHP 5 beta 3.
    PHP, фактически, является самым распостраненным языком для Web программирования. В достижении этого статуса он прошел множество этапов, от простого языка для Web программирования который уступал многим (php3), до сегодняшнего быстрого мощного и расширяемого (PHP4). Тем более приятно, что PHP не стоит на месте и продолжает развиваться оставаясь таким-же простым для начинающих и предоставляя все больше возможностей более квалифицирова...
  • PHP, Введение в PHP5
    PHP5 ещё официально не вышел, но "рабочие" версии уже трудоспособны (равно как и нестабильны!), так что мы вполне можем начать изучение новых возможностей грядущего релиза PHP и попрактиковать с ними. В этой статье мы поговорим о трёх основных нововведениях в PHP5: новая объектная модель, исключения, пространства имён. ...