Ответ
Для построения защищенных приложений в Python используется комбинация встроенных и сторонних библиотек, каждая из которых решает свою задачу:
-
Хеширование паролей:
passlibПредоставляет удобный интерфейс для работы с современными криптографическими хеш-функциями (Bcrypt, Argon2). Защищает от подбора паролей по радужным таблицам в случае утечки базы данных.from passlib.context import CryptContext pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") hashed_password = pwd_context.hash("mysecretpassword") is_correct = pwd_context.verify("mysecretpassword", hashed_password) -
Шифрование данных:
cryptographyНизкоуровневая библиотека для симметричного (AES) и асимметричного (RSA) шифрования. Используется для защиты конфиденциальных данных при хранении или передаче.from cryptography.fernet import Fernet key = Fernet.generate_key() cipher_suite = Fernet(key) encrypted_text = cipher_suite.encrypt(b"A really secret message.") -
Защита от SQL-инъекций: ORM (SQLAlchemy, Django ORM) Использование ORM вместо формирования сырых SQL-запросов является лучшей практикой. Они автоматически экранируют параметры, предотвращая атаки типа SQL-инъекций.
-
Аутентификация и авторизация:
PyJWT,python-joseБиблиотеки для работы с JSON Web Tokens (JWT), которые являются стандартом для аутентификации в современных API. Они позволяют безопасно создавать, подписывать и проверять токены. -
Статический анализ уязвимостей:
banditИнструмент для статического анализа кода (SAST), который сканирует вашу кодовую базу на предмет распространенных уязвимостей, таких как использование небезопасных модулей или жестко закодированных паролей.
Важно: Безопасность — это комплексный подход. Помимо библиотек, необходимо следить за своевременным обновлением зависимостей, валидировать все входящие данные и придерживаться принципа наименьших привилегий.