The problem with User.objects.create() in Django!
- Django에서
User.objects.create() 사용 시 비밀번호가 암호화되지 않고 일반 텍스트로 저장되는 심각한 보안 문제가 발생할 수 있음 🚨
authenticate() 함수는 해싱된 비밀번호와 데이터베이스의 비밀번호를 비교하므로, 일반 텍스트 비밀번호는 인증 실패로 이어짐 🚫
- Django의
hashers 모듈은 비밀번호 해싱을 위한 make_password() 및 check_password() 함수를 제공하며, PASSWORD_HASHERS 설정을 통해 해싱 알고리즘을 관리할 수 있음 ⚙️
User.objects.create_user() 함수는 비밀번호를 자동으로 해싱하여 저장하므로, User.objects.create() 대신 사용해야 함 ✅
set_password() 메서드를 사용하여 사용자 인스턴스에서 비밀번호를 변경하면 비밀번호가 안전하게 해싱됨 🔑
- Django의 내장 폼(
admin user creation form, user creation form)과 뷰(login view)는 비밀번호 해싱을 자동으로 처리하여 보안을 강화함 🛡️
change_password 명령을 사용하여 비밀번호를 변경할 수 있음 💻
- Django Olaf와 같은 외부 라이브러리의 signup view 또한 비밀번호 해싱을 지원함 🌐