
Если вы храните пароли в базе как обычный текст — вы в опасности!
1. Хранение пароля в открытом виде:
INSERT INTO users (username, password) VALUES ('kolya', 'mypassword123');
👉 Это ужасная практика! Если база данных утечёт, злоумышленники сразу получат доступ ко всем аккаунтам! 😱
2. Использование MD5/SHA1:
INSERT INTO users (username, password) VALUES (‘name’, 'mypassword123');
👉 MD5 и SHA1 устарели и больше не считаются безопасными! Их можно взломать с помощью радужных таблиц (rainbow tables) 🌈 или перебора (brute force). 🛑
✅ Хороший способ: хеширование паролей 🔒
Лучший способ защитить пароли — использовать bcrypt или Argon2. В MySQL есть встроенная функция PASSWORD(), но её не рекомендуют использовать, так как она небезопасна!
😕 Вместо этого используем bcrypt. 🎉
🔹 Как хешировать пароль в Python (рекомендуется)
import bcrypt
password = b'mypassword123'
hashed_password = bcrypt.hashpw(password, bcrypt.gensalt())
print(hashed_password)
🔹 Как хранить хеш в базе:
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(255) UNIQUE,
password_hash VARCHAR(255)
);
INSERT INTO users (username, password_hash) VALUES ('kolya', '$2y$10$abcdefghijABCDEFGHIJ1234567890');
👉 Здесь password_hash хранит уже зашифрованный пароль, а не сам пароль! 🔐
🔓 Как проверить пароль при входе?
В Python:
if bcrypt.checkpw(b'mypassword123', stored_hash.encode()):
print('Пароль верный! ✅')
else:
print('Неправильный пароль! ❌')
🛡 Итог
❌ НЕ храните пароли в открытом виде! 🚫
❌ НЕ используйте MD5 или SHA1! ❗
✅ ИСПОЛЬЗУЙТЕ bcrypt или Argon2! 🔥
✅ ИСПОЛЬЗУЙТЕ bcrypt.hashpw() и bcrypt.checkpw() в Python! 🏆
Следуя этим правилам, вы защитите данные пользователей и сделаете свой сервис безопаснее! 🔒💪