Ответ
Защита данных делится на две основные категории: защита данных в состоянии покоя (at rest) и при передаче (in transit).
1. Защита данных в состоянии покоя (At Rest)
Это данные, хранящиеся в файлах, базах данных и т.д.
-
Симметричное шифрование: Используется для шифрования конфиденциальной информации. Библиотека
cryptographyявляется стандартом в Python.from cryptography.fernet import Fernet # Ключ должен храниться в безопасности! key = Fernet.generate_key() cipher_suite = Fernet(key) data = b"Очень секретная информация" encrypted_data = cipher_suite.encrypt(data) decrypted_data = cipher_suite.decrypt(encrypted_data) -
Хеширование паролей: Пароли никогда не должны храниться в открытом виде. Вместо этого хранятся их хеши. Хеширование — это односторонний процесс. Библиотека
bcrypt— популярный выбор.import bcrypt password = b"super_secret_password" salt = bcrypt.gensalt() hashed_password = bcrypt.hashpw(password, salt) # Проверка пароля if bcrypt.checkpw(password, hashed_password): print("Пароль верный")
2. Защита данных при передаче (In Transit)
- Использование TLS/SSL: Всегда используйте HTTPS для веб-трафика. При работе с API убедитесь, что клиент (например,
requests) проверяет SSL-сертификат.
3. Управление секретами (Secrets Management)
Никогда не храните секреты (ключи API, пароли от БД, ключи шифрования) в коде или системе контроля версий (Git).
- Переменные окружения: Используйте файлы
.envи библиотекуpython-dotenvдля локальной разработки. - Системы управления секретами: Для production-окружений используйте специализированные инструменты, такие как HashiCorp Vault, AWS Secrets Manager или Google Secret Manager.