Ответ
Защита данных делится на две основные категории: защита данных в состоянии покоя (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.
Ответ 18+ 🔞
А, ну это же классика, блядь! Защита данных, ёпта! Как будто в банке сейф открываешь, а там — два отделения, сука, и в каждом свои приколы.
Вот смотри, есть данные, которые просто лежат, как бревно, на сервере — это в состоянии покоя (at rest). А есть те, которые летят по проводам, как угорелые, — это при передаче (in transit). И с каждым, блядь, свой геморрой.
1. Когда данные просто лежат, как говно в проруби (At Rest)
Это всё, что у тебя в файликах, в базе данных валяется. Главное правило — зашифровать нахуй.
-
Симметричное шифрование: Берёшь библиотеку
cryptography— она у нас тут, как царь и бог. Генерируешь ключ (и хранишь его так, чтобы мама не нашла, ёпта!), и шифруешь всё, что шевелится.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)
Тут всё просто, как три копейки: HTTPS и только HTTPS. Никакого этого старого-доброго HTTP, который всё подряд светит, как пизда на опушке. Любой запрос, любое API — только с SSL/TLS. Библиотека requests сама за тебя проверит сертификаты, если её не отключать, как последнего дебила.
3. А где же хранить все эти ключи и пароли? (Secrets Management)
Вот это, блядь, самый важный пункт! НИКОГДА, СУКА, НИКОГДА не пихай секреты прямо в код! Представь, что ты оставляешь ключи от квартиры под ковриком и выкладываешь фото в Инстаграм. Вот это уровень.
- Для своих поделок (разработка): Файлик
.envи библиотекаpython-dotenv. Выгрузил туда свои ключики, а в коде только имена переменных. Главное — не закоммитить этот файл в Git, а то пидары налетят! - Для серьёзных проектов (production): Тут уже нужны взрослые игрушки. HashiCorp Vault, AWS Secrets Manager или Google Secret Manager. Это такие сейфы, куда ты кладёшь свои секреты, а приложение их оттуда достаёт, когда нужно. Красиво, безопасно, волнение ебать — ноль.
Короче, суть в чём: шифруй то, что лежит, шифруй то, что летит, а ключи от всего этого добра прячь так, чтобы сам чёрт ногу сломал. Всё гениальное — просто, как хуй в пальто.