• en
  • Language: ru
  • Documentation version: 1.1.x

Предисловие для опытных программистов

Нити-локалы во Flask

Одним из решений при разработке Flask было то, что простые задачи должны быть простыми; они не должны занимать много кода и в то же время не должны ограничивать вас. В связи с этим во Flask есть несколько решений, которые могут показаться некоторым людям неожиданными или нестандартными. Например, Flask использует потоково-локальные объекты внутри, чтобы вам не приходилось передавать объекты от функции к функции внутри запроса, чтобы сохранить потокобезопасность. Такой подход удобен, но для инъекции зависимостей или при попытке повторного использования кода, который использует значение, привязанное к запросу, требуется действительный контекст запроса. Проект Flask честно относится к потоковым локалям, не скрывает их и указывает в коде и документации, где они используются.

Разрабатывайте для Web с осторожностью

При создании веб-приложений всегда помните о безопасности.

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

К сожалению, безопасность веб-приложений может быть нарушена множеством способов. Flask защищает вас от одной из самых распространенных проблем безопасности современных веб-приложений: межсайтового скриптинга (XSS). Если вы намеренно не помечаете небезопасный HTML как безопасный, Flask и лежащий в основе движок шаблонов Jinja2 защитят вас. Но существует гораздо больше способов вызвать проблемы с безопасностью.

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

Flask не отличается от любого другого фреймворка в том, что вы, разработчик, должны строить с осторожностью, следя за эксплойтами при сборке под ваши требования.