🔐 Как хранить пароли в базе данных? 🤔

Если вы храните пароли в базе как обычный текст — вы в опасности! 🚨 Это одна из самых больших ошибок в безопасности. Давайте разберёмся, как правильно хранить пароли в MySQL, чтобы ваши пользователи были защищены! 🔒



🚫 Плохие способы хранения паролей

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! 🏆



Следуя этим правилам, вы защитите данные пользователей и сделаете свой сервис безопаснее! 🔒💪