Использование библиотеки Python Talisman для настройки протокола HTTPS для повышения безопасности веб-приложений.
После развертывания вашего проекта Python (например, модели машинного обучения, веб-сайта) в качестве веб-приложения Flask на облачных решениях, таких как Heroku, вы можете заметить, что он загружается с незащищенным HTTP-соединением, несмотря на уже настроенные сертификаты SSL/TSL.
Такие незащищенные запросы представляют угрозу безопасности, поскольку злоумышленники могут легко нарушить связь между клиентом и сервером.
В этой статье рассматривается использование библиотеки Talisman для перенаправления всех входящих запросов приложений на HTTPS вместо HTTP.
Содержание
(1) О HTTPS
(2) Что такое Talisman?
(3) Основное использование
(4) Дополнительные параметры
О HTTPS
HTTPS (Hypertext Transfer Protocol Secure) — это безопасная версия протокола HTTP, поскольку она добавляет дополнительный уровень шифрования, аутентификации и целостности через протокол SSL/TLS.
HTTPS позволяет безопасно передавать конфиденциальные данные, такие как номера кредитных карт и учетные данные для входа в систему, через Интернет. Таким образом, HTTPS быстро становится стандартным протоколом для всех веб-сайтов, независимо от того, связаны ли они с обменом конфиденциальными данными.
Например, Google Chrome начал помечать не-HTTPS-сайты как небезопасные, в то время как Apple требует, чтобы API-интерфейс приложений iOS использовал HTTPS.
Что такое Талисман?
Talisman — это расширение Python Flask, которое настраивает ваше веб-приложение Flask таким образом, чтобы оно было защищено от распространенных проблем веб-безопасности.
Разработанный сообществом Google Cloud Platform, Talisman работает путем включения и настройки заголовков безопасности HTTP в веб-приложениях, чтобы диктовать связанные с безопасностью детали связи HTTP.
Заголовки безопасности HTTP обеспечивают дополнительную безопасность, ограничивая поведение в браузере и на сервере после запуска веб-приложения.
Одной из важнейших функций Talisman является принудительное подключение всех веб-приложений к HTTPS, что и будет в центре внимания этой статьи.
Основное использование
Сначала мы устанавливаем Talisman (flask-talisman) с помощью следующей команды:
pip install flask-talisman
Как только это будет сделано, мы импортируем библиотеку и оборачиваем наше приложение Flask с помощью Talisman в наш основной скрипт Python.
Всего одной строкой мы успешно реализовали преимущества безопасности Talisman для нашего веб-приложения Flask.
Вот несколько важных моментов, которые следует отметить в отношении упаковки Talisman:
- Значение по умолчанию для аргумента
force_https
равно True, что означает, что все запросы (не связанные с отладкой) будут автоматически направляться на HTTPS. Следовательно, нет необходимости задавать аргумент явно. - Вы могли заметить, что в примере для аргумента
content_security_policy
задано значение Нет. Причина в том, что многие пользователи сталкивались с проблемами (например, с ошибкой перенаправления HTTPS), когда для политики безопасности содержимого оставалось значение по умолчанию. Эта политика является частью расширенных параметров Talisman, которые мы рассмотрим далее.
Расширенные настройки
Политики безопасности контента (CSP) являются частью расширенных опций Talisman, позволяющих вывести безопасность вашего веб-приложения на новый уровень.
Параметры CSP по умолчанию являются строгими и предотвращают загрузку любых ресурсов, находящихся не в том же домене, что и приложение. Поэтому большинству веб-приложений потребуется изменить эту политику, и именно по этой причине мы установили content_security_policy=None
в приведенном выше примере.
CSP позволяет вам определять конкретные типы ресурсов, явно разрешенных в веб-приложении (например, изображения, видео, коды, веб-сайты и т. д.).
Допустим, у нас есть следующие требования:
- Разрешить загрузку изображений из любого места
- Разрешить использование аудио- и видеофайлов только двумя доверенными поставщиками (
kenneth.com
иleung.com
) - Разрешить исполняемые скрипты только с определенного сервера, на котором размещен доверенный код (
userscripts.trusted.com
)
Вот код Python для перевода вышеизложенного в настройки Talisman:
Подведение итогов
Мы увидели, как Talisman можно легко использовать для реализации соответствующих заголовков HTTP для жизненно важной безопасности веб-приложений Flask.
Помимо простого основного использования (которого уже достаточно для многих вариантов использования и проектов POC), Talisman также предлагает расширенные детализированные настройки для удовлетворения различных уровней требований безопасности.
Для получения дополнительной информации и подробностей посетите Talisman Страница GitHub и Страница Mozilla Content Security Policy.
А пока получайте удовольствие от реализации Talisman для своих веб-приложений Flask!
Отказ от ответственности: универсального средства защиты веб-приложений не существует. Talisman может помочь, но безопасность — это больше, чем просто установка нескольких заголовков. Любое общедоступное веб-приложение должно иметь комплексный подход к безопасности.
Ресурсы
Want to Connect With the Author? Check out my GitHub to stay in the loop of more exciting tech and data science-related content.