Предварительное слово для опытных программистов
Локальные переменные потоков в Flask
Одно из решений при проектировании Flask заключается в том, чтобы простые задачи оставались простыми; они не должны требовать много кода, но при этом не должны ограничивать вас. Из-за этого Flask использует несколько архитектурных решений, которые некоторые люди могут посчитать неожиданными или нестандартными. Например, Flask использует локальные объекты потоков внутри себя, чтобы вам не приходилось передавать объекты от функции к функции внутри запроса, для обеспечения потокобезопасности. Этот подход удобен, но требует действительного контекста запроса для инъекции зависимостей или при попытке повторного использования кода, использующего значение, связанное с запросом. Проект Flask честен в отношении локальных переменных потоков, не скрывает их и указывает в коде и документации, где они используются.
Разработка веб-приложений с осторожностью
Всегда учитывайте безопасность при разработке веб-приложений.
Если вы разрабатываете веб-приложение, вы, вероятно, позволяете пользователям регистрироваться и оставлять свои данные на вашем сервере. Пользователи доверяют вам свои данные. И даже если вы единственный пользователь, который может оставлять данные в вашем приложении, вы все равно хотите, чтобы эти данные хранились безопасно.
К сожалению, существует множество способов нарушения безопасности веб-приложения. Flask защищает вас от одной из наиболее распространенных проблем безопасности современных веб-приложений: межсайтовых сценариев выполнения (XSS). Если вы не помечаете небезопасный HTML как безопасный, Flask и лежащий в основе движок шаблонов Jinja2 позаботятся об этом. Но существуют и другие способы создания проблем с безопасностью.
Документация будет предупреждать вас о аспектах разработки веб-приложений, требующих внимания к безопасности. Некоторые из этих проблем безопасности гораздо сложнее, чем можно подумать, и мы все иногда недооцениваем вероятность того, что уязвимость будет использована – до тех пор, пока какой-нибудь хитрый злоумышленник не придумает способ использовать наши приложения. И не думайте, что ваше приложение недостаточно важно, чтобы привлечь злоумышленника. В зависимости от типа атаки, есть вероятность, что автоматические боты будут исследовать способы заполнения вашей базы данных спамом, ссылками на вредоносное ПО и тому подобное.
Flask ничем не отличается от других фреймворков в том, что вам, как разработчику, необходимо разрабатывать с осторожностью, следя за уязвимостями при построении вашего приложения согласно требованиям.
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/1.0.x/advanced_foreword/