Содержание
Данная глава временно взята из первой версии книги и подлежит корректировке. Вы можете помочь с этим!
Перевод © Попов Руслан <radz • yandex • ru>
Интернет может быть страшным местом.
В наши дни, high-profile security gaffes seem to crop up on a daily basis. Мы видели вирусы, распространяющиеся с огромной скоростью, рои взломанных компьютеров становились оружием, бесконечная гонка вооружений в войне со спаммерами, и множество сообщений о взломанных веб сайтах.
Будучи веб разработчиками, мы имеем обязанность делать всё необходимое для противодействия этим силам тьмы. Каждый веб разработчик должен рассматривать безопасность в качестве фундаментального аспекта своей работы. К сожалению, реализовать безопасную среду сложно — хакерам достаточно найти единственную уязвимость, а защитникам надо закрыть каждую из них.
Django пытается смягчить эту проблему. Оно спроектировано для автоматической защиты вашего проекта от большинства стандартных ошибок программирования, влияющих на безопасность, которые часто делают новые (и даже опытные) разработчики. Важно понимать в чём заключаются эти ошибки, как Django может защитить вам и, самое главное, что вы можете сделать для улучшения безопасности вашего кода.
Несмотря на всё это, сначала сделаем важное заявление: Мы не пытаемся предоставить полное руководство для каждого известного эксплоита FIXME и, соответственно, мы не будем пытаться объяснить каждую уязвимость подробно. Вместо этого, мы будет предоставлять краткое описание проблем на примере Django.
Если вы вынесите только одну вещь из этой главы, то пусть это будет — «Никогда, ни при каких условиях, не доверяйте никаким данным полученным от пользователей».
Вы никогда не будете знать, кто находится на другой стороне HTTP соединения. Это может быть один из ваших пользователей, но так же легко это может быть гнусный хакер, ищущий дыру в вашем сайте.
Любые данных из любого формата, которые приходит от пользовательских браузеров, должны рассматриваться с достаточным объёмом паранойи. Под этими данными понимаются как «внутренние» (т.е., переданные через формы), так и «внешние» (т.е., HTTP заголовки, cookie и другая информация HTTP запроса). Нет никаких сложностей в подмене метаинформации запроса, которую браузеры автоматически добавляют к нему.
Каждая из описываемых в данной главе уязвимостей происходит напрямую из-за доверия к данным, которые пришли по проводам и которые не были проверены перед их использованием. Вы должны постоянно спрашивать себя: «Откуда пришли эти данные?»
0 комментариев | Оставьте комментарий