Хостинг Django от «Джино»
Table of contents

Глава 19. Безопасность

Данная глава временно взята из первой версии книги и подлежит корректировке. Вы можете помочь с этим!

Перевод © Попов Руслан <radz • yandex • ru>

Интернет может быть страшным местом.

В наши дни, high-profile security gaffes seem to crop up on a daily basis. Мы видели вирусы, распространяющиеся с огромной скоростью, рои взломанных компьютеров становились оружием, бесконечная гонка вооружений в войне со спаммерами, и множество сообщений о взломанных веб сайтах.

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

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

Несмотря на всё это, сначала сделаем важное заявление: Мы не пытаемся предоставить полное руководство для каждого известного эксплоита FIXME и, соответственно, мы не будем пытаться объяснить каждую уязвимость подробно. Вместо этого, мы будет предоставлять краткое описание проблем на примере Django.

Тема безопасности в вебе

Если вы вынесите только одну вещь из этой главы, то пусть это будет — «Никогда, ни при каких условиях, не доверяйте никаким данным полученным от пользователей».

Вы никогда не будете знать, кто находится на другой стороне HTTP соединения. Это может быть один из ваших пользователей, но так же легко это может быть гнусный хакер, ищущий дыру в вашем сайте.

Любые данных из любого формата, которые приходит от пользовательских браузеров, должны рассматриваться с достаточным объёмом паранойи. Под этими данными понимаются как «внутренние» (т.е., переданные через формы), так и «внешние» (т.е., HTTP заголовки, cookie и другая информация HTTP запроса). Нет никаких сложностей в подмене метаинформации запроса, которую браузеры автоматически добавляют к нему.

Каждая из описываемых в данной главе уязвимостей происходит напрямую из-за доверия к данным, которые пришли по проводам и которые не были проверены перед их использованием. Вы должны постоянно спрашивать себя: «Откуда пришли эти данные?»


Ищем Python программистов

Found misprint?
Select it with the mouse and hit Enter
Ctrl-Enter
Processed:
33 1 199 25


The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!

We are glad to hear your questions, comments or suggestions!
(Open in new tab)

Users number: 601

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
ЯМ:41001223475816


© 2008-2012 Ruslan Popov @ gmail.com Powered by Django 1.2.5